APIから取得した場所のArrayListのリストがあります。これは、SupportMapFragmentから生成されたGoogleMapに追加されます。
リストからマーカーを作成してマップに追加し、マーカーIDをマーカーインデックスのマップに追加して、後でonInfoWindowClickで参照できるようにします。
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);
}
}
これに関する私の問題は、場所のリストが数百になることがあり、マーカーを追加している間、地図が数秒間ハングすることです。
AsyncTaskを使用してみましたが、明らかにここでの作業の大部分はUIの操作であり、runOnUiThreadまたはpublishProgressのシェナニガンに違いはありません。
これを行うためのより良い方法、またはマーカーを作成して、私が知らないすべてのマーカーをまとめて追加する方法はありますか?