【发布时间】:2015-06-29 05:55:44
【问题描述】:
我在 markerarray 列表中有大约 11000 个标记,当我尝试加载地图时它会阻塞我的 UI,即使我使用 Thread 和 RunOnUi 线程,还有其他更好的方法可以尝试吗??
Thread t = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < list.size(); i++) {
markerOptionList.add(new MarkerOptions().position(
new LatLng(Double.parseDouble(list.get(i)
.getLatitude()), Double
.parseDouble(list.get(i)
.getLangtitude()))).title(
list.get(i).getName() + "~"
+ list.get(i).getCity() + "~"
+ list.get(i).getSector() + "~"
+ String.valueOf(false)));
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
addMarker();
}
});
}
});
t.start();
添加标记是我在地图中添加标记的方法
请提出更好的实施方式 提前致谢
【问题讨论】:
-
您不应该一次添加所有标记。而是按需添加它们。您可以通过使用缩放级别和地图的可见部分来确定何时加载哪些标记来做到这一点。因此,在较低的缩放级别下,您可以按区域或类似的方式对标记进行分组,并且只为该区域显示一个标记,并且随着缩放的增加,增加该特定区域的数量。
-
我认为 Android 中的 AsyncTask 可能会对您有所帮助
-
在 for 循环外创建 MarkerOption 对象。 MarkerOptions markerOptions=new MarkerOptions();
-
带有 Progressdialog 的异步任务对我有帮助
标签: android google-maps-markers