私はユーザーにマーカーを表示できるGoogleマップベースのアプリを持っています。私が抱えている問題は、マップ上のすべてのマーカーを拡大表示すると、数秒後にマップが元のズームレベルにリセットされ、すべてのマーカーが表示されないということです。GoogleマップUndesirablyカメラのズームアウトをリセットする
マップをユーザーのズームレベルに維持したいが、ロジックを思いつくことができない。その後
public boolean firstTime = true;
、チェック:
@Override
protected void onPostExecute(final ArrayList<Item> arrayList) {
if(isCancelled()) return;
if(googleMap!=null) {
googleMap.clear();
mMarker2Item.clear();
LatLngBounds.Builder boundBuilder = new LatLngBounds.Builder();
for (Item item : arrayList) {
MarkerOptions opts = new MarkerOptions()
.position(item.location())
.title(item.name);
if(item.iconBitmap!=null){
opts = opts.icon(BitmapDescriptorFactory.fromBitmap(item.iconBitmap));
}
Marker newMarker = googleMap.addMarker(opts);
newMarker.setSnippet(item.vicinity);
mMarker2Item.put(newMarker, item);
boundBuilder.include(item.location());
}
try {
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(boundBuilder.build(), 200);
googleMap.moveCamera(cameraUpdate);
googleMap.animateCamera(cameraUpdate, 1000, null);
} catch (Exception ex) {
}
} else mHandler.postDelayed(new Runnable() {
@Override
public void run() {
onPostExecute(arrayList);
}
}, 500);
}
フラグを使用して、AsyncTaskが初めて実行されたときにCameraUpdateの処理を行うことができます。 –
ありがとう@ダニエルニュジェント私はまだ全面的なコーディングの側面とロジックに精通しています。コードサンプルをどのように提供できるでしょうか? – user3078406