根据显示的地图区域,动态添加标记的可能性有哪些?在Google地图v2上为Android动态添加标记
我有很多标记或者让我说我的标记需要大量的渲染性能,因为它们是自定义的。我现在实现了,当一个“camerachange”被激发时,只有40个标记被绘制。所以在这个时候,当相机位置改变时,我总是渲染40个新标记。
我读了关于runnable和handler的问题,他们有更多的选择吗?是否有人知道这些可能性中的哪一个是最好的,这样就不会阻止Ui线程?
根据显示的地图区域,动态添加标记的可能性有哪些?在Google地图v2上为Android动态添加标记
我有很多标记或者让我说我的标记需要大量的渲染性能,因为它们是自定义的。我现在实现了,当一个“camerachange”被激发时,只有40个标记被绘制。所以在这个时候,当相机位置改变时,我总是渲染40个新标记。
我读了关于runnable和handler的问题,他们有更多的选择吗?是否有人知道这些可能性中的哪一个是最好的,这样就不会阻止Ui线程?
我会建议使用适用于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在撰写本文时没有将聚类合并到主分支中,但可以看到clustering branch。
如果你想自己的代码的话,我可以建议这些方法:只在VisibleRegion
Marker
S(同样的事情Android地图扩展使用上面的代码时那样),例如,从这里我演示项目: AddOnlyVisibleMarkersExampleActivity.javaHandler
,例如这里Marker
S:AddMarkersInBackgroundExampleActivity.java我甚至在几天前通过问题跟踪器问过你的问题;)我的问题是,我正在使用新的android studio,需要通过gradle包含库;)我现在可以手动完成,但它会如果我只需要在Gradle文件中添加一行或两行并自动管理依赖关系,那么非常好;直接添加库并将其检入到vcs中不是一个好习惯......但现在我想我必须去用它:) – DieselPower
嘿Maciej,我设法将你的库导入到android studio项目中;)但是有一个问题,添加标记的最佳位置是什么? 根据可见区域(始终从本地数据库获取)和限制为40个标记,我添加了标记(不包含您的库)... 我应该读一次所有数据库条目并让其余的库执行吗?或者,我现在也应该只显示可见的标记? – DieselPower
@DieselPower我计划迟早添加gradle支持。至于装载,最好把处理留给图书馆。如果您使用的数量超过了几百个,我建议使用'addMarkersDynamically'来改善用户体验。 –
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);
}
});
你看着AsyncTasks或装载机的应用程序的响应? –
@CTulip Google Maps必须在UI线程上使用Android API v2。 –