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

Я пытаюсь настроить mylocationoverlay. К сожалению, он ведет себя довольно странно. Он отлично работает, за исключением того, что он не появляется до тех пор, пока я не покину 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;

}

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


person akhalsa    schedule 21.10.2011    source источник
comment
после добавления вашего наложения вы должны заполнить () на карте.   -  person ilango j    schedule 21.10.2011


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

person Reno    schedule 21.10.2011
comment
Вместо этого я использовал remove, и он все еще не появляется в первый раз. Я также добавил в журнал отчет, чтобы показать, сколько наложений было на карте, и он сказал 1, хотя ничего не было показано. Я думаю, что этот мат означает, что метод рисования не вызывается? - person akhalsa; 21.10.2011
comment
Я также должен добавить, что когда синий круг появляется в первый раз, он не включает точку в центре. Затем синий круг исчезает, оставляя меня без наложения. Во второй раз, когда я открываю действие, синий круг изначально присутствует, но включает точку наложения в центре. Затем, когда круг исчезает, точка все еще остается там. Я совершенно в недоумении, почему это не работает в первый раз! - person akhalsa; 21.10.2011