更新时间:2020-06-23
两点距离计算
根据用户指定的两个坐标点,计算这两个点的实际地理距离。核心代码如下:
Objective-C
Swift
//导入工具功能包BaiduMapAPI_Utils.framework #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> BMKMapPoint point1 = BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.915,116.404)); BMKMapPoint point2 = BMKMapPointForCoordinate(CLLocationCoordinate2DMake(38.915,115.404)); CLLocationDistance distance = BMKMetersBetweenMapPoints(point1,point2);
//在桥接头文件BMKSwiftDemo-Bridging-Header中导入工具功能包 #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> let point1 = BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.915,116.404)) let point2 = BMKMapPointForCoordinate(CLLocationCoordinate2DMake(38.915,115.404)) let distance = BMKMetersBetweenMapPoints(point1,point2)
点与圆、多边形的位置关系
SDK支持判断点与圆或多边形的位置关系,判断点是否在圆内,或者是否在多边形内。
判断点与圆位置关系的示例代码如下:
Objective-C
Swift
//导入工具功能包BaiduMapAPI_Utils.framework #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> BOOL ptInCircle = BMKCircleContainsCoordinate(CLLocationCoordinate2DMake(39.918,116.408), CLLocationCoordinate2DMake(39.915,116.404), 1000);
//在桥接头文件BMKSwiftDemo-Bridging-Header中导入工具功能包 #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> let ptInCircle = BMKCircleContainsCoordinate(CLLocationCoordinate2DMake(39.918,116.408), CLLocationCoordinate2DMake(39.915,116.404), 1000);
判断点与多边形位置关系的示例代码如下:
Objective-C
Swift
//导入工具功能包BaiduMapAPI_Utils.framework #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> CLLocationCoordinate2D coords[5] = {0}; coords[0].latitude = 39.965; coords[0].longitude = 116.604; coords[1].latitude = 39.865; coords[1].longitude = 116.604; coords[2].latitude = 39.865; coords[2].longitude = 116.704; coords[3].latitude = 39.905; coords[3].longitude = 116.654; coords[4].latitude = 39.965; coords[4].longitude = 116.704; BOOL ptInPolygon = BMKPolygonContainsCoordinate(CLLocationCoordinate2DMake(39.918,116.408),coords, 5);
//在桥接头文件BMKSwiftDemo-Bridging-Header中导入工具功能包 #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> var coords = [CLLocationCoordinate2D]() coords.append(CLLocationCoordinate2D(latitude: 39.965, longitude: 116.604)) coords.append(CLLocationCoordinate2D(latitude: 39.865, longitude: 116.604)) coords.append(CLLocationCoordinate2D(latitude: 39.865, longitude: 116.704)) coords.append(CLLocationCoordinate2D(latitude: 39.905, longitude: 116.654)) coords.append(CLLocationCoordinate2D(latitude: 39.965, longitude: 116.704)) let ptInPolygon = BMKPolygonContainsCoordinate(CLLocationCoordinate2DMake(39.918,116.408),&coords, 5)
点与折线的位置关系
SDK还提供获取折线上与折线外指定位置最近点的方法。核心代码如下:
Objective-C
Swift
//导入工具功能包BaiduMapAPI_Utils.framework #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> BMKMapPoint *polylinePoints = new BMKMapPoint[4]; polylinePoints[0]= BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.915,116.404)); polylinePoints[1]= BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.915,116.454));; polylinePoints[2]= BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.975,116.524));; polylinePoints[3]= BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.855,116.554)); BMKMapPoint point = BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.815,116.504)); BMKMapPoint nearestPoint = BMKGetNearestMapPointFromPolyline(point, polylinePoints, 4);
//在桥接头文件BMKSwiftDemo-Bridging-Header中导入工具功能包 #import <BaiduMapAPI_Utils/BMKUtilsComponent.h> var polylinePoints = [BMKMapPoint]() polylinePoints.append(BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.915, 116.404))) polylinePoints.append(BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.915, 116.454))) polylinePoints.append(BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.975, 116.524))) polylinePoints.append(BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.855, 116.554))) let point = BMKMapPointForCoordinate(CLLocationCoordinate2DMake(39.815, 116.504)); let nearestPoint = BMKGetNearestMapPointFromPolyline(point, &polylinePoints, 4)