设置手势委托时无法选择地图对象
Posted
技术标签:
【中文标题】设置手势委托时无法选择地图对象【英文标题】:Unable to select a map object when Gesture delegate set 【发布时间】:2015-04-15 06:19:24 【问题描述】:这是一个与 HERE iOS HybridPlus SDK 相关的问题。
如果与 NMAMapView
和 NMAMapViewDelegate
和 NMAMapGestureDelegate
类的 mapView 进行了任何交互,则都设置了 NMAMapGestureDelegate
的方法。
例如:
如果点击地图上的对象,则- mapView:didReceiveTapAtLocation:
会被调用,- mapView:didSelectObjects:
不会被调用!
而在 android 中并非如此。在 android 中,如果一个对象被点击并设置了两个委托,那么上面提到的两个方法都会被调用。
问题:iOS 中有什么解决方案?
【问题讨论】:
【参考方案1】:从 HERE 开发支持获得了这个答案。
mapView:didSelectObjects:
没有被调用,因为它们 通过实现覆盖默认的点击处理程序mapView:didReceiveTapAtLocation
在他们的NMAMapGestureDelegate
中。 因为这是一个协议,他们不能调用mapView:didReceiveTapAtLocation
的超类运行 默认实现,在他们执行他们需要的操作之后。 然而,传递给mapView:didSelectObjects:
的对象在 一种标准方式,可供客户使用,因此他们可以 模仿默认实现,例如:- (void)mapView:(NMAMapView *)mapView didReceiveTapAtLocation:(CGPoint)location NSLog(@"didReceiveTapAtLocation: %fx%f", location.x, location.y); if ([mapView.delegate respondsToSelector:@selector(mapView:didSelectObjects:)]) // Check to see if any objects are selected NSArray *selectedObjects = [mapView visibleObjectsAtPoint:location]; // If any objects were selected, treat the tap as a selection if (selectedObjects.count > 0) [mapView.delegate mapView:mapView didSelectObjects:selectedObjects];
【讨论】:
以上是关于设置手势委托时无法选择地图对象的主要内容,如果未能解决你的问题,请参考以下文章