2013-08-24 4 views
1

Я отмечаю текущее местоположение пользователя с помощью настраиваемого маркера. Я рисую его один раз и в 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(), который очищает все.

+0

Пока вы меняете местоположение, тогда удалите предыдущий маркер .. – Piyush

+0

Да, я пробовал, но почему-то я потерял ссылку на рисованный маркер. –

+0

Когда вы меняете свое местоположение, попробуйте удалить предыдущие и создать новый маркер с новыми местоположениями ... – Piyush

ответ

0

Согласно вашему описанию, я могу только сказать, что это может произойти только в том случае, если currentUserLocationMarker становится недействительным между вызовом функции. попробуйте отладить и использовать logcat.

Смежные вопросы