3

根据显示的地图区域动态添加标记的可能性是什么?

我有很多标记,或者说我的标记需要很多性能才能呈现,因为它们是自定义的。我现在实现了它,当“camerachange”被触发时,只绘制了 40 个标记。所以此时我总是在改变相机位置时渲染 40 个新标记。

我阅读了有关可运行和处理程序的信息,它们有更多选择吗?有人知道这些可能性中的哪一个是最好的,这样 ui-thread 就不会被阻塞吗?

4

2 回答 2

13

我建议使用可用于 Google Maps Android API v2 的集群库之一。

除了集群之外,Android Maps Extensions可以为您做很多工作。该 API 与 Google 官方库非常相似。
如果您根本不想使用集群,您仍然可以通过以下方式实现您的目标:

map.setClustering(new ClusteringSettings()
    .enabled(false)
    .addMarkersDynamically(true)); // I didn't change the API to match your title ;)

Clusterkraf主要关注动画聚类。

在撰写本文时, Android Maps Utils没有将集群合并到主分支中,但您可以看到集群分支

如果您想自己编写代码,我可以建议以下方法:

  • 仅在其中添加Markers VisibleRegion(与使用上面的代码时 Android Maps Extensions 所做的相同),来自我的演示项目的示例:AddOnlyVisibleMarkersExampleActivity.java
  • 添加Markers using Handler,此处示例:AddMarkersInBackgroundExampleActivity.java
  • 以上混合;当屏幕上可能有数百个标记时,这对应用程序的响应能力有很大帮助(您应该通过使用集群来避免)
于 2013-08-26T19:27:31.217 回答
-1
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                MarkerOptions marker = new MarkerOptions().position(
                        latLng)
                        .title("Hello Maps ");
                marker.icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
                googleMap.addMarker(marker);
            }
        });
于 2016-08-15T10:58:16.493 回答