рисование маршрута на карте в Android - PullRequest
1 голос
/ 30 мая 2011

В моем приложении я рисую маршрут на карте, куда бы я ни шел, и прикрепляю источник и пункт назначения. поэтому я использую класс LocationManager для получения обновления местоположения, как оно myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,new myLocationListener());. я иду 10 метров дистанции, обновление местоположения не производится. так что для проверки моего кода. я просто добавил функциональность в функцию onStatusChanged (потому что она вызывается как минимум один раз). Я запускаю приложение onStatusChanged. в чем моя проблема pin the source and destination and route drawing class called continuously even though the onStatusChanged is not called. и pin is not pointed and root is not drawn even though their class is called.

мой код:

public class Map extends MapActivity 
  {  
    // class for pin the location 
class MapOverlay extends com.google.android.maps.Overlay
    {
      ............
      Log.e("loc","true");
    }
   public void onCreate(Bundle savedInstanceState) 
   {
      .................. 
      myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,new myLocationListener());        
   }
@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}

class myLocationListener implements LocationListener {
    public void onLocationChanged(Location loc) {       
    }
    ........
   public void onStatusChanged(String provider, int status, Bundle extras) {
     Log.e("MAP","onStatusChanged - called");
     ....// finding lat and lng getting.
     Log.e("Updated Location",""+latPointDst+" , "+lngPointDst);
      ..........
      // here i called MyOverlay class -- root drawing.
      // here i called MapOverlay class  -- pin the location
   }  

} 

 public class MyOverlay extends Overlay {
  .............
  Log.e("location change","drawing");
  }

}

мой logcat:

 05-30 13:29:54.653: ERROR/MAP(3850): onStatusChanged - called
 05-30 13:29:54.673: ERROR/Updated Location(3850): 9.909228086471558 , 78.10081958770752
 05-30 13:29:54.743: ERROR/loc(3850): true
 05-30 13:29:54.783: ERROR/loc(3850): true
 05-30 13:29:54.793: ERROR/loc(3850): true
 05-30 13:29:54.803: ERROR/loc(3850): true
 05-30 13:29:54.813: ERROR/location change(3850): drawing
 05-30 13:29:54.983: ERROR/loc(3850): true
 05-30 13:29:54.993: ERROR/loc(3850): true
 05-30 13:29:54.993: ERROR/loc(3850): true
 05-30 13:29:55.003: ERROR/loc(3850): true
 05-30 13:29:55.013: ERROR/location change(3850): drawing
 05-30 13:29:55.193: ERROR/loc(3850): true
 05-30 13:29:55.203: ERROR/loc(3850): true
 05-30 13:29:55.223: ERROR/loc(3850): true
 05-30 13:29:55.233: ERROR/loc(3850): true
 05-30 13:29:55.243: ERROR/location change(3850): drawing
 05-30 13:29:55.473: ERROR/loc(3850): true
 05-30 13:29:55.483: ERROR/loc(3850): true
 05-30 13:29:55.573: ERROR/loc(3850): true
 05-30 13:29:55.603: ERROR/loc(3850): true
 05-30 13:29:55.633: ERROR/location change(3850): drawing
 05-30 13:29:55.693: ERROR/loc(3850): true

и т. Д. я пишу вызовы классов внутри по статусу изменен, но я не знаю, как вызывается постоянно без изменения статуса ... если я ошибаюсь, пожалуйста, помогите сделать мою нужду. Помогите мне, пожалуйста.

1 Ответ

0 голосов
/ 30 мая 2011

Я думаю, вам нужно сосредоточиться на 2 вещах:

1 - Вы не должны полагаться на onStatusChanged, чтобы получить недавнее местоположение. Метод вызывается, когда

  • статус провайдера меняется.
  • поставщик не может выбрать местоположение или если поставщик недавно стал доступен после периода недоступности.

Единственный способ получить последние изменения местоположения в onLocationChanged.

2 - метод розыгрыша оверлея будет называться много . Вы не должны полагаться на этот метод для добавления маркеров. Вы можете добавить маркеры в оверлей вне метода рисования. При заполнении наложения или аннулировании карты все маркеры, добавленные в наложение, будут отображаться на карте. Нет необходимости добавлять маркеры в методе рисования.

Как вы можете видеть из принятого ответа здесь Рисование линии / пути на Google Картах , метод draw () используется для рисования пути между 2 гео-точками. Если вы хотите добавить маркеры (булавки) на карту, вы можете сделать это на своем оверлее, см. Этот ответ Как очистить / сбросить ItemizedOverlay в Android? для получения дополнительной информации о том, как добавить маркеры на карта.

...