如何根据地图所显示的区域动态添加标记?
我有很多标记,或者说我的标记需要很多性能才能呈现出来,因为它们是自定义的。我现在实现了只有在“相机更改”被触发时才绘制40个标记。这样,每当摄像机位置改变时,就会重新渲染40个新的标记。
我读到了关于Runnable和Handler的东西,还有其他选项吗?有人知道哪个选项是最好的,以便UI线程不会被阻塞吗?
如何根据地图所显示的区域动态添加标记?
我有很多标记,或者说我的标记需要很多性能才能呈现出来,因为它们是自定义的。我现在实现了只有在“相机更改”被触发时才绘制40个标记。这样,每当摄像机位置改变时,就会重新渲染40个新的标记。
我读到了关于Runnable和Handler的东西,还有其他选项吗?有人知道哪个选项是最好的,以便UI线程不会被阻塞吗?
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
(与使用上面的代码时Android Maps Extensions所做的相同),示例如下: AddOnlyVisibleMarkersExampleActivity.java Handler
添加Marker
,示例如下: AddMarkersInBackgroundExampleActivity.java addMarkersDynamically
以获得更好的用户体验。 - MaciejGórskiaddMarkersDynamically
时,您只需通过GoogleMap.addMarker
添加所有标记,但AME仅在必要时(它们将出现在用户屏幕上)才会真正添加它们。当然,Marker
和MarkerOption
必须来自AME包,而不是Maps Android API。 - MaciejGórskigoogleMap.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);
}
});