На самом деле причина была.
в первый раз, когда я загружаю запись, он получает местоположение GPS на месте. иногда, когда я прихожу к этому занятию, gps тратит время на определение местоположения, и мой код передается и ничего не появляется.
так что проблема в том, что если местоположение не получено вовремя, тогда я должен ждать его и отображать, как мы его получаем.
поэтому я реализовал RunOnFirstFix (), чтобы избавиться от этой проблемы. и еще одна самая важная вещь - использовать Mapview.postInvalidate (), чтобы отобразить ее в просмотре карты.
поэтому, если мы выполним этот шаг, у нас не возникнет проблема исчезновения MyLocationOverlay.
code sample onCreate()
{
// new line
myLocOverlay.runOnFirstFix(showCurrentLocationIfObtainedLate );
}
Runnable showCurrentLocationIfObtainedLate = new Runnable() {
@Override
public void run() {
if(myLocOverlay.getMyLocation() != null)
{
mapView.getController().animateTo(myLocOverlay.getMyLocation());
mapView.postInvalidate();
}
}
};