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

问题描述 投票:1回答:3

我正在构建一个iOS应用程序,其中包括Here map和搜索功能,我目前正在使用“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地图上显示有关地点的基本信息的最佳方式是什么?

ios here-api
3个回答
0
投票

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


0
投票

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

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

[self.mapView addMapOverlay:overlaySubview];


0
投票

你有一个正确的开始。

我想你有一个坐标数组,你在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没有任何tap检测方法,这里提供的是Maps Maps SDK。你必须自己实现它。由于NMAMapOverlay继承自Apple的UIView,因此它允许您这样做。

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

我会说,和NMAMapMarker一起去吧

© www.soinside.com 2019 - 2024. All rights reserved.