2

这是与HERE iOS HybridPlus SDK相关的问题。

如果使用类的 mapView 完成了任何交互NMAMapViewNMAMapViewDelegate并且NMAMapGestureDelegate两者都设置了,那么只有方法NMAMapGestureDelegate被调用。

例如:

如果点击地图上的对象,则被- mapView:didReceiveTapAtLocation:调用且 - mapView:didSelectObjects:不会被调用!

而在android中情况并非如此。在 android 中,如果一个对象被点击并且两个代表都被设置,那么上面提到的两个方法都会被调用。

问题:在 iOS 中解决这个问题的方法是什么?

4

1 回答 1

1

从HERE Development Support得到这个答案。

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]; 
        } 
    } 
}
于 2015-04-16T05:28:08.793 回答