カスタム マーカーで現在のユーザーの位置をマークします。一度描画し、OnLocationChange
リスナーでユーザーの場所に応じて位置を変更しますが、マップ上にマーカーが重複することがあります。なんで?あなたはなにか考えはありますか?OnLocationChange
リスナーのマーカー位置を変更するのは良い考えですか?
I 描画マーカー:
currentUserLocationMarker = mMap.addMarker(new MarkerOptions()
.position(new LatLng(currentUserLocation.latitude, currentUserLocation.longitude))
.title("Current Location"));
そして彼の立場を変える:
currentUserLocationMarker.setPosition(locLatLng);
私の方法は以下のようになります。onCreateView()
とで一度呼び出しOnMyLocationChangeListener()
ます。
if (currentUserLocationMarker == null) {
currentUserLocationMarker = mMap.addMarker(new MarkerOptions()
.position(new LatLng(currentUserLocation.latitude, currentUserLocation.longitude))
.title("Current Location"));
} else {
currentUserLocationMarker.setPosition(locLatLng);
}
より良い解決策は、一度描画し、常に描画、クリア、および再描画する代わりに位置を変更することだと思います。
メソッドを呼び出してマーカーを削除すること.remove()
は許容されますが、マップ全体をクリアすることは、多くのマーカーがあり、たとえばマップ上に描画されたポリラインがある場合は悪い考えです。
マップにマーカーとポリラインを削除するための個別のメソッドがあれば便利ですが、現在は.clear()
すべてをクリアする 1 つのメソッドがあります。