在 Here iOS SDK 中,如何让 NMAMapMarker 在点击时显示标注?

In the Here iOS SDK, how can I make an NMAMapMarker show a callout when tapped?

我正在构建一个包含 Here 地图和搜索功能的 iOS 应用程序,我目前正在使用 "starter" SDK。目前,当应用程序执行搜索时,会为每个搜索结果创建一个 NMAMapMarker。我希望地图在用户点击 MapMarker 时显示某种标注或信息框(就像在 Apple Maps 中点击图钉时发生的情况),但我无法确定此功能是否包含在 SDK 中.

我知道有一个 didSelectObject 委托方法,但我是否必须创建自定义视图并手动呈现它?我还注意到 "Premium" SDK 包含一个 NMAMapOverlay。这是在点击时显示信息框的更好选择吗?最后,我注意到在 NMAView (https://developer.here.com/mobile-sdks/documentation/ios-hybrid-plus/topics_api_nlp_hybrid_plus/interfacenmaviewobject.html) 的继承图中有一个 NMALabledMapMarker,但我在 API 参考中找不到关于它的任何其他信息。这是在 MapMarker 上显示有关某个地点的一些基本信息的好方法吗?在 Here 地图上显示有关某个地点的基本信息的最佳方式是什么?

NMAMapOverlay 是目前唯一的选择。此功能仅在 iOS Premium 的 HERE SDK 中提供。

目前,NMAMapOverlay 是替代 NMAMapMarkers 显示自定义视图的唯一选项。

NMAMapOverlay* overlaySubview = [NMAMapOverlay mapOverlayWithSubview:customView geoCoordinates:place.position];

[self.mapView addMapOverlay:overlaySubview];

你有一个正确的开始。

我想你有一个坐标数组,你在 NMAMapView 上添加了 NMAMapMarkers

所以基本上每个 NMAMapMarker 都有自己的 坐标 ,您可以从中区分它。

在你符合NMAMapViewDelegate之后,使用这个方法:

func mapView(_ mapView: NMAMapView, didSelect objects: [NMAViewObject]) {
  for object in objects {
     // Search for NMAMapMarkers only
     if object is NMAMapMarker {
          // Get your map marker as follow
          let mapMarker = object as! NMAMapMarker
          // Check if you found your map marker by checking coordinates
          // Show desired information with your custom method
          }
      }
   }
}

注意:NMAMapOverlay 没有 Here Maps SDK 提供的任何点击检测方法。你必须自己实施它。由于 NMAMapOverlay 继承自 Apple 的 UIView 它允许您这样做。

您可以根据自己的需要在它们之间进行选择。

我会说,用 NMAMapMarker