【问题标题】:Can i add marker clustering to my already set map and markers?我可以将标记聚类添加到我已经设置的地图和标记中吗?
【发布时间】:2014-05-12 12:26:26
【问题描述】:

所以我已经设置了地图,并且我使用函数 addMarkersToMap() 添加了所有带有图标和标题的标记,但它们非常稀疏,所以我正在考虑将它们聚类。有没有办法对我已经在地图上设置的标记进行聚类?我发现这段代码非常适合从 .json 文件进行聚类,但我的标记已经在地图上设置,我不知道如何使用已经设置的图标和标题来聚类标记。

           protected void startDemo() {
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 10));

        mClusterManager = new ClusterManager<MyItem>(this,map);

        map.setOnCameraChangeListener(mClusterManager);
        try {
            readItems();
        } catch (JSONException e) {
            Toast.makeText(this, "Problem reading list of markers.", Toast.LENGTH_LONG).show();
        }
    }

    private void readItems() throws JSONException {
        InputStream inputStream = getResources().openRawResource(R.raw.radar_search);
        List<MyItem> items = new MyItemReader().read(inputStream);
        for (int i = 0; i < 5; i++) {
            double offset = i / 60d;
            for (MyItem item : items) {
                LatLng position = item.getPosition();
                double lat = position.latitude + offset;
                double lng = position.longitude + offset;
                MyItem offsetItem = new MyItem(lat, lng);
                mClusterManager.addItem(offsetItem);
            }
        }

【问题讨论】:

    标签: android google-maps maps google-maps-markers markerclusterer


    【解决方案1】:

    您不能同时使用集群以及您已经设置的自定义标记(带有标题和片段)。

    一旦您开始使用集群,所有标记添加和相关任务都将由集群管理器处理。

    但所有的希望都没有失去!!

    您可以在为集群管理器创建的 MarkerItem 对象中添加 POJO 变量、它们的 getter 和 setter。

    然后你可以在你的地图活动中创建一个这样的类,

    class OwnIconRendered extends DefaultClusterRenderer<MyItem> {
    
            public OwnIconRendered(Context context, GoogleMap map,
                                   ClusterManager<MyItem> clusterManager) {
                super(context, map, clusterManager);
            }
    
            @Override
            protected void onBeforeClusterItemRendered(MyItem item, MarkerOptions markerOptions) {
                //markerOptions.icon(item.getIcon());
                markerOptions.snippet(item.getContact());
                markerOptions.title(item.getName());
                super.onBeforeClusterItemRendered(item, markerOptions);
            }
    }
    

    并像这样为您的集群管理器设置此渲染

    mClusterManager.setRenderer(new OwnIconRendered(activity.getApplicationContext(), getMap(), mClusterManager));
    

    有关更详细的解释,您可以参考我提到的这个答案。 http://stackoverflow.com/questions/27745299/how-to-add-title-snippet-and-icon-to-clusteritem

    【讨论】:

      猜你喜欢
      • 2014-05-05
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2018-10-11
      • 2016-09-04
      • 1970-01-01
      相关资源
      最近更新 更多