我可以将标记聚类添加到我已设置的地图和标记中吗?

时间:2014-05-12 12:26:26

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

所以我已经设置了一个地图,并且我使用函数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);
            }
        }

1 个答案:

答案 0 :(得分:0)

您不能同时使用群集以及已设置的自定义标记(包含标题和代码段)。

开始使用群集后,群集管理员将负责所有标记添加和相关任务。

但所有希望都没有丢失!!

您可以在为集群管理器创建的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);
        }
}

并为您的clustermanager设置此渲染,如下所示

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

有关详细说明,请参阅我所提及的答案。 http://stackoverflow.com/questions/27745299/how-to-add-title-snippet-and-icon-to-clusteritem