Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
增加1000';s标记到android谷歌地图_Android_Google Maps Android Api 2_Android Loader - Fatal编程技术网

增加1000';s标记到android谷歌地图

增加1000';s标记到android谷歌地图,android,google-maps-android-api-2,android-loader,Android,Google Maps Android Api 2,Android Loader,我正在开发一个基于谷歌地图的android应用程序。 我需要在地图上显示1000个标记。 目前,我从SQLite数据库加载程序中检索每个标记的纬度和经度,并将标记添加到public void onload finished(final loader,final Cursor Cursor)方法中。 但是,这种方法会带来非常糟糕的用户体验,因为在我添加标记时,应用程序没有响应。 如何在谷歌地图上添加1000个标记并保持应用程序的响应性? 因为我必须在主UI线程上将标记添加到地图。您可以使用提供程序

我正在开发一个基于谷歌地图的android应用程序。
我需要在地图上显示1000个标记。
目前,我从SQLite数据库加载程序中检索每个标记的纬度和经度,并将标记添加到
public void onload finished(final loader,final Cursor Cursor)
方法中。
但是,这种方法会带来非常糟糕的用户体验,因为在我添加标记时,应用程序没有响应。
如何在谷歌地图上添加1000个标记并保持应用程序的响应性?
因为我必须在主UI线程上将标记添加到地图。

您可以使用提供程序提供地图。
在安卓系统中,你可以设置一个标签来使用这些平铺地图。

一种可能的方法是,当它们落入地图的可见区域时,只添加
标记

实际上,您必须将对
addMarker
的调用从
onLoadFinished
移动到
onCameraChange
,并且在
onLoadFinished
中只创建创建这些
标记所需的数据列表。最简单的形式可能是
List

Lalit Poptani在上面的评论中提到,即使您不想使用集群,也可以为您处理这些问题。您只需将代码保持原样,然后只进行如下调用

googleMap.setClustering(new ClusteringSettings().enabled(false).addMarkersDynamically(true));

在用这个扩展库替换Google Maps Android API v2之后。

你尝试过AsyncTask吗..我没有尝试过AsyncTask,但是我认为这不会解决问题,因为我仍然需要在onPostExecute()映射扩展中的ui线程上添加标记,请加上这个作为一个正确的答案,因为它值得更多的信贷。谢谢Lalit Poptani。谢谢你抽出时间回答我的问题。然而,“Spatial Lite”链接给了我一个404OhMyGod,感谢链接到集群扩展,我认为它只存在于JS API中。@thibaultd这是我写的代码。这里还有另一种方法:@MaciejGórski我没有看到
setClustering
用于
GoogleMap
对象的方法。这不是在新图书馆里吗?