objective-c – 在iOS7上的MKMapView中检测点击MKPolygonView
发布时间:2020-12-16 05:04:59 所属栏目:百科 来源:网络整理
导读:基于我在这个SO问题( Touch events on MKMapView’s overlays)上发现的内容,我实现了一种拦截MKPolygon上的轻击手势的方法. 它在我们的应用程序中运行良好,该应用程序是使用Xcode 4.6.3针对iOS 6构建的.但是当我在iOS 7设备上尝试它时停止工作. 特别 CLLocat
基于我在这个SO问题(
Touch events on MKMapView’s overlays)上发现的内容,我实现了一种拦截MKPolygon上的轻击手势的方法.
它在我们的应用程序中运行良好,该应用程序是使用Xcode 4.6.3针对iOS 6构建的.但是当我在iOS 7设备上尝试它时停止工作. 特别 CLLocationCoordinate2D coord = [neighborhoodMap_ convertPoint:point toCoordinateFromView:neighborhoodMap_]; // We get view from MKMapView's viewForOverlay. MKPolygonView *polygonView = (MKPolygonView*) view; CGPoint polygonViewPoint = [polygonView pointForMapPoint:mapPoint]; BOOL mapCoordinateIsInPolygon = CGPathContainsPoint(polygonView.path,NULL,polygonViewPoint,NO); 由于某种原因,即使给定的坐标在MKPolygonView中,对CGPathContainsPoint的调用也不再返回YES.不确定是否有人遇到过这个问题,但我很感激您的任何见解. 谢谢! 解决方法
从iOS 7开始,您需要使用MKOverlayRenderer:
BOOL tapInPolygon = NO; MKOverlayRenderer * polygonRenderer = [mapView rendererForOverlay:polygonOverlay]; if ( [polygonRenderer isKindOfClass:[MKPolygonRenderer class]]) { //Convert the point CLLocationCoordinate2D coordinate = [self.mapView convertPoint:tapPoint toCoordinateFromView:self.mapView]; MKMapPoint mapPoint = MKMapPointForCoordinate(coordinate); CGPoint polygonViewPoint = [polygonRenderer pointForMapPoint:mapPoint]; // with iOS 7 you need to invalidate the path,this is not required for iOS 8 [polygonRenderer invalidatePath]; tapInPolygon = CGPathContainsPoint(polygonRenderer.path,NO); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c#如何从多行textBox逐行读写?
- Flex 4 SDK (Flex Hero) 并非集成进 Eclipse 就能做可视化开
- xml – 缺少节点的xpath
- Ruby日期算术错误 – “无法将Date转换为精确数字(TypeErro
- c# – Windows商店应用程序无法通过AppContainerCheck
- Cocos2d-x 3.X 事件分发机制
- C#:Array.CreateInstance:无法将类型为[*]的对象转换为键
- ruby – 在迭代Hash / Array时区分{k :: v}与[:k,:v]
- React-native 下拉弹框选择(根据网上省 市 区插件改写)
- react的单文件编写方式
推荐文章
站长推荐
热点阅读