在 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
我正在构建一个包含 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