问题描述
|
在我的应用程序中,我在我要移动的地图上绘制路线路径,并将源和目的地固定。所以我使用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?有关如何向地图添加标记的更多信息。