Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.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
Android 向地图添加多个标记(v2)_Android_Google Maps_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Android 向地图添加多个标记(v2)

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

我有一个从API中提取位置的ArrayList列表,这些位置被添加到由SupportMapFragment生成的GoogleMap中

我从列表中创建标记并将它们添加到地图中,然后将标记ID添加到标记索引的地图中,以便稍后通过OnInfo WindowClick进行引用

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没有,从来没有找到一个好的解决方案,所以只能处理滞后问题。谢谢你的回复。