Android 向地图添加多个标记(v2)
我有一个从API中提取位置的ArrayList列表,这些位置被添加到由SupportMapFragment生成的GoogleMap中 我从列表中创建标记并将它们添加到地图中,然后将标记ID添加到标记索引的地图中,以便稍后通过OnInfo WindowClick进行引用Android 向地图添加多个标记(v2),android,google-maps,google-maps-api-3,google-maps-markers,Android,Google Maps,Google Maps Api 3,Google Maps Markers,我有一个从API中提取位置的ArrayList列表,这些位置被添加到由SupportMapFragment生成的GoogleMap中 我从列表中创建标记并将它们添加到地图中,然后将标记ID添加到标记索引的地图中,以便稍后通过OnInfo WindowClick进行引用 public void addLocationMarkers() { mGoogleMap.clear(); LocationBlahObject thelocation; int size = mNear
public void addLocationMarkers() {
mGoogleMap.clear();
LocationBlahObject thelocation;
int size = mNearbyLocations.size();
for (int i = 0; i < size; i++) {
thelocation = mNearbyLocations.get(i);
Marker m = mGoogleMap
.addMarker(new MarkerOptions()
.position(
new LatLng(thelocation.Latitude,
thelocation.Longitude))
.title(thelocation.Name)
.snippet(thelocation.Address)
.icon(BitmapDescriptorFactory
.defaultMarker(thelocation.getBGHue())));
mMarkerIndexes.put(m.getId(), i);
}
}
public void addLocationMarkers(){
mGoogleMap.clear();
位置blahobject位置;
int size=mNearbyLocations.size();
对于(int i=0;i
我的问题是,有时位置列表可能有数百个,地图在添加标记时会挂起几秒钟
我尝试过使用AsyncTask,但显然这里的大部分工作是操作UI,任何RunNuithRead或publishProgress的把戏我都没有表现出任何区别
有没有更好的方法可以做到这一点,或者有没有一种我不知道的方法可以创建标记并批量添加它们?氪星是对的。为了避免UI线程上的延迟,您必须一次不放置太多标记。放置几个标记,然后让UI线程做其他事情,然后放置更多标记。刚刚从谷歌那里发现了这个问题。这就是我如何解决添加100+标记的滞后问题。它们慢慢地冒出来,但我觉得没关系
class DisplayPinLocationsTask扩展异步任务{
私人名单地址;
公共显示PINLocationStask(列出地址){
this.address=地址;
}
@凌驾
受保护的空位背景(空位…空位){
收件人(最终地址:地址){
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
LatLng LatLng=新LatLng(地址.纬度,地址.经度);
MarkerOptions MarkerOptions=新MarkerOptions();
标记选项位置(板条);
mMap.addMarker(markerOptions);
}
});
//睡眠,以便让其他UI操作在标记之间发生。
试一试{
睡眠(5);
}捕捉(中断异常e){
//不在乎
}
}
返回null;
}
}
@Czechnology没有,从来没有找到一个好的解决方案,所以只能处理滞后问题。谢谢你的回复。