在nutiteq集群中的多POI标记上的PopUp

时间:2016-05-16 06:47:35

标签: android maps nutiteq

我使用群集通过Nutiteq管理我地图上的很多POI。我在this guid上实现了这个基础。一切都很好,除了我有一些精确坐标的geoPoint,它们与不同的位置实体有关!我需要显示一个popUp来通知我的用户这些要点。

现在我的问题是当用户点击多点标记时如何显示弹出窗口?

非常感谢您的关注和参与。

1 个答案:

答案 0 :(得分:0)

您可能使用附加到点的某些元数据来检测点的弹出数据。与此类似,您应该将元数据添加到群集构建器中的群集点。我正在使用来自https://github.com/nutiteq/hellomap3d-android/blob/master/com.nutiteq.advancedmap3/src/com/nutiteq/advancedmap3/ClusteredGeoJsonActivity.java

的Nutiteq示例代码
  1. 确保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;
    }
    
  2. 将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);
        ...
     }
    
  3. 参见样本结果:

    sample result