2013-08-26 87 views
2

根据显示的地图区域,动态添加标记的可能性有哪些?在Google地图v2上为Android动态添加标记

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

我读了关于runnable和handler的问题,他们有更多的选择吗?是否有人知道这些可能性中的哪一个是最好的,这样就不会阻止Ui线程?

+0

你看着AsyncTasks或装载机的应用程序的响应? –

+1

@CTulip Google Maps必须在UI线程上使用Android API v2。 –

回答

11

我会建议使用适用于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

+0

我甚至在几天前通过问题跟踪器问过你的问题;)我的问题是,我正在使用新的android studio,需要通过gradle包含库;)我现在可以手动完成,但它会如果我只需要在Gradle文件中添加一行或两行并自动管理依赖关系,那么非常好;直接添加库并将其检入到vcs中不是一个好习惯......但现在我想我必须去用它:) – DieselPower

+0

嘿Maciej,我设法将你的库导入到android studio项目中;)但是有一个问题,添加标记的最佳位置是什么? 根据可见区域(始终从本地数据库获取)和限制为40个标记,我添加了标记(不包含您的库)... 我应该读一次所有数据库条目并让其余的库执行吗?或者,我现在也应该只显示可见的标记? – DieselPower

+0

@DieselPower我计划迟早添加gradle支持。至于装载,最好把处理留给图书馆。如果您使用的数量超过了几百个,我建议使用'addMarkersDynamically'来改善用户体验。 –

-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); 
      } 
     }); 
相关问题