android中的地图上的路线图

问题描述

| 在我的应用程序中,我在我要移动的地图上绘制路线路径,并将源和目的地固定。所以我使用LocationManager类获取位置更新,因为它
myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,new myLocationListener());
。我走了10米,没有位置更新完成。所以检查我的代码。我只是将功能放在onStatusChanged函数中(因为它至少被调用了一次)。我运行应用程序onStatusChanged被调用。我的问题是ѭ1。和
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,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
等等。 我写了一个在statuschanged内调用的类,但是我不知道如何在不改变status的情况下连续调用。如果我错了,请协助满足我的需要。请帮我。     

解决方法

        我认为您需要在这里集中注意两件事: 1-您不应该依赖onStatusChanged来获取最近的位置。该方法在以下情况下被调用 提供者状态更改。 供应商无法获取位置,或者供应商在一段时间不可用之后最近才变得可用。 获取最新位置更改的唯一方法是onLocationChanged。 2-叠加层的绘制方法将被称为很多。您不应该依赖该方法来添加标记。您可以在draw方法之外将标记添加到叠加层中。当您填充叠加层或使地图无效时,添加到叠加层的所有标记都会显示在地图上。无需在draw方法中添加标记。 从此处接受的答案中可以看出,在Google Maps上绘制线/路径,使用draw()方法在2个地理位置之间绘制路径。如果要在地图上添加标记(大头针),则可以在叠加层上进行操作,请参见此答案。如何在Android中清除/重置ItemizedOverlay?有关如何向地图添加标记的更多信息。