This commit is contained in:
DDIsFriend
2023-08-18 17:28:57 +08:00
commit f0e8a1709d
4282 changed files with 192396 additions and 0 deletions
@@ -0,0 +1,23 @@
//
// DDMAGeometry.h
// DDMAMapKit_Private
// Created by DDIsFriend on 2023/2/2.
#import <Foundation/Foundation.h>
#import <AMapNaviKit/MAGeometry.h>
NS_ASSUME_NONNULL_BEGIN
@interface DDMAGeometry : NSObject
// 获取一个合适的地图展示范围
+ (MAMapRect)getVisibleMapRectWithCoordinates:(CLLocationCoordinate2D *_Nullable)coords coordinateCount:(NSUInteger)coordinateCount;
// 获取一个合适的地图展示范围
+ (MAMapRect)getVisibleMapRectWithMapPoints:(MAMapPoint *_Nullable)mapPoints mapPointCount:(NSUInteger)mapPointCount;
// 获取一个合适的地图展示范围
+ (MAMapRect)getVisibleMapRectWithCLLocations:(NSArray<CLLocation *> *_Nullable)locations;
@end
NS_ASSUME_NONNULL_END
@@ -0,0 +1,87 @@
//
// DDMAGeometry.m
// DDMAMapKit_Private
// Created by DDIsFriend on 2023/2/2.
#import "DDMAGeometry.h"
//#import <MAMapKit/MAPolyline.h>
//#import <AMapSearchKit/AMapSearchKit.h>
//#import <DDMAMapKit_Private/DDMASearch.h>
@implementation DDMAGeometry
+ (MAMapRect)getVisibleMapRectWithCoordinates:(CLLocationCoordinate2D *_Nullable)coords coordinateCount:(NSUInteger)coordinateCount{
if (coords == NULL) return MAMapRectMake(0,0,0,0);
MAMapPoint *mapPoints = new MAMapPoint[coordinateCount];
for (NSUInteger i = 0; i < coordinateCount; i++) {
mapPoints[i] = MAMapPointForCoordinate(coords[i]);
}
if (coordinateCount < 2) return MAMapRectMake(mapPoints[0].x,mapPoints[0].y,0,0);
return [self getVisibleMapRectWithMapPoints:mapPoints mapPointCount:coordinateCount];
}
+ (MAMapRect)getVisibleMapRectWithMapPoints:(MAMapPoint *_Nullable)mapPoints mapPointCount:(NSUInteger)mapPointCount{
if (mapPoints == NULL) return MAMapRectMake(0,0,0,0);
if (mapPointCount < 2) return MAMapRectMake(mapPoints[0].x,mapPoints[0].y,0,0);
double xMin = 0.0;
double yMin = 0.0;
double xMax = 0.0;
double yMax = 0.0;
MAMapPoint mapPoint = mapPoints[0];
xMin = mapPoint.x;
yMin = mapPoint.y;
xMax = mapPoint.x;
yMax = mapPoint.y;
for (NSUInteger i = 1; i < mapPointCount; i++) {
MAMapPoint point = mapPoints[i];
if (xMin > point.x) {
xMin = point.x;
}
if (yMin > point.y) {
yMin = point.y;
}
if (xMax < point.x) {
xMax = point.x;
}
if (yMax < point.y) {
yMax = point.y;
}
}
return MAMapRectMake(xMin, yMin, xMax - xMin, yMax - yMin);
}
+ (MAMapRect)getVisibleMapRectWithCLLocations:(NSArray<CLLocation *> *_Nullable)locations{
if (locations == nil) return MAMapRectMake(0,0,0,0);
if (locations.count == 0) return MAMapRectMake(0,0,0,0);
CLLocationCoordinate2D *coords = new CLLocationCoordinate2D[locations.count];
[locations enumerateObjectsUsingBlock:^(CLLocation * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
coords[idx].latitude = obj.coordinate.latitude;
coords[idx].longitude = obj.coordinate.longitude;
}];
return [self getVisibleMapRectWithCoordinates:coords coordinateCount:locations.count];
}
//+ (MAPolyline *)getPolylineWithRouteSearchResponse:(AMapRouteSearchResponse *)routeSearchResponse{
// NSArray *array = [DDMASearch coordsArrayWithRouteSearchResponse:routeSearchResponse];
// [array enumerateObjectsUsingBlock:^(DDMACoordinate _Nonnull coordinate, NSUInteger idx, BOOL * _Nonnull stop) {
// if (idx == 0) {
// CLLocationCoordinate2D *coords = (CLLocationCoordinate2D *)[(NSValue *)coordinate[DDMACoords] pointerValue];
// NSUInteger count = [coordinate[DDMACoordsCount] integerValue];
// MAPolyline *polyline = [MAPolyline polylineWithCoordinates:coords count:count];
//
// dispatch_async(dispatch_get_main_queue(), ^{
// [mapView.maMapView setVisibleMapRect:[DDMAGeometry getVisibleMapRectWithCoordinates:coords coordinateCount:count] edgePadding:UIEdgeInsetsMake(50, 30, 50, 30) animated:YES];
// });
//
// }
//
// }];
//}
@end