PopUp 是 nutiteq 集群中的多 POI 标记
PopUp on Multi POI marker in nutiteq clusters
我在 Nutiteq 上使用 Clusters 来管理我地图上的许多 POI。我基于 this guid 实现了该功能。一切都很好,除了我有一些具有精确坐标的 geoPoint,它们与不同的位置实体相关!我需要显示一个弹出窗口来通知我的用户这些要点。
现在我的问题是当用户点击多点标记时如何显示弹出窗口?
非常感谢您的关注和参与。
您可能使用附加到点的一些 元数据 来检测点的弹出数据。与此类似,您应该将元数据添加到集群构建器中的集群点。我正在使用来自 https://github.com/nutiteq/hellomap3d-android/blob/master/com.nutiteq.advancedmap3/src/com/nutiteq/advancedmap3/ClusteredGeoJsonActivity.java
的 Nutiteq 示例代码
确保 ClusterElements 也有关于各个点的数据。在这里,我只是把所有的名字都放在一个长字符串中。您可能需要更具体的内容,例如 ID-s
列表
@Override
public VectorElement buildClusterElement(MapPos pos, VectorElementVector elements) {
// Cluster popup has just a number of cluster elements, and default style
// You can create here also Marker, Point etc. Point is suggested for big number of objects
// Note: pos has center of the cluster coordinates
Log.d(Const.LOG_TAG,"cluster from "+elements.size()+" elements");
// add all capital names to metadata of cluster element
StringBuilder capitals = new StringBuilder();
for (int i=0;i<elements.size();i++){
capitals.append(elements.get(i).getMetaDataElement("Capital"));
capitals.append(";");
}
BalloonPopup popup = new BalloonPopup(
pos,
balloonPopupStyle,
Long.toString(elements.size()), "");
popup.setMetaDataElement("ClickText", capitals.toString());
return popup;
}
在此示例中添加 MapEventListener,这样您就可以看到集群和单个首都的弹出窗口
protected void onCreate(Bundle savedInstanceState) {
// MapSampleBaseActivity creates and configures mapView
...
// listener with vectorlayer for popups
LocalVectorDataSource vectorDataSource = new LocalVectorDataSource(baseProjection);
mapView.setMapEventListener(new MyMapEventListener(mapView, vectorDataSource));
VectorLayer vectorLayer2 = new VectorLayer(vectorDataSource);
mapView.getLayers().add(vectorLayer2);
...
}
查看示例结果:
我在 Nutiteq 上使用 Clusters 来管理我地图上的许多 POI。我基于 this guid 实现了该功能。一切都很好,除了我有一些具有精确坐标的 geoPoint,它们与不同的位置实体相关!我需要显示一个弹出窗口来通知我的用户这些要点。
现在我的问题是当用户点击多点标记时如何显示弹出窗口?
非常感谢您的关注和参与。
您可能使用附加到点的一些 元数据 来检测点的弹出数据。与此类似,您应该将元数据添加到集群构建器中的集群点。我正在使用来自 https://github.com/nutiteq/hellomap3d-android/blob/master/com.nutiteq.advancedmap3/src/com/nutiteq/advancedmap3/ClusteredGeoJsonActivity.java
的 Nutiteq 示例代码确保 ClusterElements 也有关于各个点的数据。在这里,我只是把所有的名字都放在一个长字符串中。您可能需要更具体的内容,例如 ID-s
列表@Override public VectorElement buildClusterElement(MapPos pos, VectorElementVector elements) { // Cluster popup has just a number of cluster elements, and default style // You can create here also Marker, Point etc. Point is suggested for big number of objects // Note: pos has center of the cluster coordinates Log.d(Const.LOG_TAG,"cluster from "+elements.size()+" elements"); // add all capital names to metadata of cluster element StringBuilder capitals = new StringBuilder(); for (int i=0;i<elements.size();i++){ capitals.append(elements.get(i).getMetaDataElement("Capital")); capitals.append(";"); } BalloonPopup popup = new BalloonPopup( pos, balloonPopupStyle, Long.toString(elements.size()), ""); popup.setMetaDataElement("ClickText", capitals.toString()); return popup; }
在此示例中添加 MapEventListener,这样您就可以看到集群和单个首都的弹出窗口
protected void onCreate(Bundle savedInstanceState) { // MapSampleBaseActivity creates and configures mapView ... // listener with vectorlayer for popups LocalVectorDataSource vectorDataSource = new LocalVectorDataSource(baseProjection); mapView.setMapEventListener(new MyMapEventListener(mapView, vectorDataSource)); VectorLayer vectorLayer2 = new VectorLayer(vectorDataSource); mapView.getLayers().add(vectorLayer2); ... }
查看示例结果: