我正在构建一个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地图上显示有关地点的基本信息的最佳方式是什么?
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没有任何tap检测方法,这里提供的是Maps Maps SDK。你必须自己实现它。由于NMAMapOverlay继承自Apple的UIView,因此它允许您这样做。
您可以根据自己的需要在它们之间进行选择。
我会说,和NMAMapMarker一起去吧