根据显示的地图区域动态添加标记的可能性是什么?
我有很多标记,或者说我的标记需要很多性能才能呈现,因为它们是自定义的。我现在实现了它,当“camerachange”被触发时,只绘制了 40 个标记。所以此时我总是在改变相机位置时渲染 40 个新标记。
我阅读了有关可运行和处理程序的信息,它们有更多选择吗?有人知道这些可能性中的哪一个是最好的,这样 ui-thread 就不会被阻塞吗?
根据显示的地图区域动态添加标记的可能性是什么?
我有很多标记,或者说我的标记需要很多性能才能呈现,因为它们是自定义的。我现在实现了它,当“camerachange”被触发时,只绘制了 40 个标记。所以此时我总是在改变相机位置时渲染 40 个新标记。
我阅读了有关可运行和处理程序的信息,它们有更多选择吗?有人知道这些可能性中的哪一个是最好的,这样 ui-thread 就不会被阻塞吗?
我建议使用可用于 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没有将集群合并到主分支中,但您可以看到集群分支。
如果您想自己编写代码,我可以建议以下方法:
Marker
s VisibleRegion
(与使用上面的代码时 Android Maps Extensions 所做的相同),来自我的演示项目的示例:AddOnlyVisibleMarkersExampleActivity.javaMarker
s using Handler
,此处示例:AddMarkersInBackgroundExampleActivity.javagoogleMap.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);
}
});