概述
定义两个属性
@interface OutDoorViewController ()<MAMapViewDelegate>
@property (nonatomic, strong) MAMapView *maMapView;
@property (nonatomic, strong) MAPolygonView *polygonView;
@end
初始化指定代理人
self.maMapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
self.maMapView.delegate = self;
[self.view addSubview:self.maMapView];
构造一个多边形
//构造多边形数据对象
CLLocationCoordinate2D coordinates[4];
coordinates[0].latitude = 39.810892;
coordinates[0].longitude = 116.233413;
coordinates[1].latitude = 39.816600;
coordinates[1].longitude = 116.331842;
coordinates[2].latitude = 39.762187;
coordinates[2].longitude = 116.357932;
coordinates[3].latitude = 39.733653;
coordinates[3].longitude = 116.278255;
MAPolygon *polygon = [MAPolygon polygonWithCoordinates:coordinates count:4];
//在地图上添加折线对象
[_maMapView addOverlay:polygon];
- (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id <MAOverlay>)overlay
{
if ([overlay isKindOfClass:[MAPolygon class]]) {
_polygonView = [[MAPolygonView alloc] initWithPolygon:overlay];
_polygonView.lineWidth = 5.f;
_polygonView.strokeColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:0.8];
_polygonView.fillColor = [UIColor colorWithRed:0.77 green:0.88 blue:0.94 alpha:0.8];
//连接类型
_polygonView.lineJoin = kCGLineJoinMiter;
return _polygonView;
}
return nil;
}
点击地图区域判断是否在范围内
- (void)mapView:(MAMapView *)mapView didSingleTappedAtCoordinate:(CLLocationCoordinate2D)coordinate
{
MAMapPoint point = MAMapPointForCoordinate(coordinate);
if (MAPolygonContainsPoint(point, _polygonView.polygon.points, 4)) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"在区域内" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"返回" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"在区域内");
}]];
[self presentViewController:alert animated:YES completion:^{ }];
}else{
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"不在区域内" preferredStyle:UIAlertControllerStyleAlert];
[alert addAction:[UIAlertAction actionWithTitle:@"返回" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"不在区域内");
}]];
[self presentViewController:alert animated:YES completion:^{ }];
}
}
就可以根据在范围内和外进行分别的操作了
end
最后
以上就是凶狠冰淇淋为你收集整理的iOS判断点是否在多边形面内(高德地图开发)的全部内容,希望文章能够帮你解决iOS判断点是否在多边形面内(高德地图开发)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复