Я отмечаю текущее местоположение пользователя с помощью настраиваемого маркера. Я рисую его один раз и в OnLocationChange
слушатель. Я меняю его положение в соответствии с местоположением пользователя, но иногда на карте есть дубликаты маркеров. Зачем? У тебя есть идеи? И хорошая идея изменить положение маркера в OnLocationChange
слушателя?Маркер по местоположению пользователя в Android API Google Maps v2
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()
, который очищает все.
Пока вы меняете местоположение, тогда удалите предыдущий маркер .. – Piyush
Да, я пробовал, но почему-то я потерял ссылку на рисованный маркер. –
Когда вы меняете свое местоположение, попробуйте удалить предыдущие и создать новый маркер с новыми местоположениями ... – Piyush