【问题标题】:route drawing on map in android在android中的地图上绘制路线
【发布时间】:2011-05-30 19:21:07
【问题描述】:

在我的应用程序中,我在地图上绘制路线路径,无论我在哪里移动并固定源和目的地。所以我使用 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");
  }

}

我的日志:

 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 内编写类调用,但我不知道如何在不改变状态的情况下连续调用......如果我错了,请协助满足我的需要。请帮我。

【问题讨论】:

    标签: android android-maps


    【解决方案1】:

    我认为您需要在这里关注两件事:

    1 - 您不应依赖 onStatusChanged 来获取最近的位置。该方法被调用时

    • 提供程序状态更改。
    • 提供商无法获取位置,或者如果提供商最近在一段时间不可用后变得可用。

    获取最新位置更改的唯一方法是在 onLocationChanged 中。

    2 - 叠加层的绘制方法将被大量调用。您不应该依赖该方法来添加标记。您可以在 draw 方法之外向叠加层添加标记。当您填充叠加层或使地图无效时,您添加到叠加层的任何标记都将显示在地图上。无需在draw方法中添加标记。

    正如您在Drawing a line/path on Google Maps已接受 答案中所见,draw() 方法用于在两个地理点之间绘制路径。如果您想在地图上添加标记(大头针),您可以在叠加层上执行此操作,请参阅此答案 How to clear / reset an ItemizedOverlay in Android? 了解有关如何向地图添加标记的更多信息。

    【讨论】:

      猜你喜欢
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2011-08-14
      • 1970-01-01
      • 2013-06-23
      • 2016-10-29
      相关资源
      最近更新 更多