mylocationoverlay исчезает при первом обнаружении местоположения

Я пытаюсь настроить наложение mylocation. К сожалению, это действует довольно странно. Он работает нормально, за исключением того, что он появляется только после того, как я покину MapActivity и вернусь в свое приложение. Первоначально карта появляется, и есть синий круг, в то время как это получает хорошее местоположение. Однако вместо разрешения точки круг просто исчезает.

Мой код выглядит так:

onResume() {
    myLocation = new MyLocationOverlay(getActivity(), mp);
myLocation.enableMyLocation();
myLocation.runOnFirstFix(new Runnable(){
       public void run() {
          map.getOverlays().clear();
      map.getOverlays().add(myLocation);
      map.postInvalidate();
       }
    }
}


onPause() {
  myLocation.disableMyLocation();
  layout.removeView(map);
  map = null;

}

У кого-нибудь есть мысли о том, что здесь может происходить? Поскольку это в значительной степени дословно, как выглядят все примеры в Интернете, я могу добавить, что я тестирую это на атриксе Motorolla под управлением 2.3.4.

1 ответ

Решение

Edit : Позвольте мне пройти через ваш код:

onResume() {
// First time: draw a circle somewhere here. There is no GPS fix yet, so no dot. 
// Second time: The dot from the previous fix exists, so you get a circle and dot.
myLocation = new MyLocationOverlay(getActivity(), mp);
myLocation.enableMyLocation();
myLocation.runOnFirstFix(new Runnable(){
       public void run() {
       // First time: removes the circle and draws a dot.
       // Second time: removes the circle and dot, and draw a new dot. 
       map.getOverlays().clear();
       map.getOverlays().add(myLocation);
       map.postInvalidate();
       }
    }
}

map.getOverlays().clear(); удаляет круг

использование remove() вместо этого удалите ненужные наложения, вместо того чтобы очистить их все.

Не забудьте позвонить map.invalidate(); всякий раз, когда вам нужно вызвать перерисовку

Другие вопросы по тегам