首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >android环境下地图上的路线绘制

android环境下地图上的路线绘制
EN

Stack Overflow用户
提问于 2011-05-30 16:11:33
回答 1查看 1.4K关注 0票数 1

在我的应用程序中,我在地图上绘制路线路径,无论我移动到哪里,并固定来源和目的地。所以我在myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,new myLocationListener());时使用LocationManager类来获取位置更新。我走了10米的距离,没有位置更新。所以为了检查我的代码。我只是将功能放在onStatusChanged函数中(因为它至少被调用了一次).i运行应用程序,调用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

我的代码:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
 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

诸若此类。我在状态已更改的情况下编写了类调用,但我不知道如何在不更改状态的情况下连续调用。。如果我错了,请帮助我做我需要的。请帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-30 16:37:13

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

1-你不应该依赖onStatusChanged来获取最近的位置。在以下情况下调用该方法:

  • 提供程序状态更改。如果提供程序在经过一段时间的unavailability.

后最近变得可用,则

  • 提供程序无法获取位置

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

2-覆盖图的绘制方法将称为a lot。您不应该依赖该方法来添加标记。可以在draw方法之外将标记添加到覆盖中。填充覆盖或使地图无效时,添加到覆盖中的任何标记都将显示在地图上。不需要在draw方法中添加标记。

正如您可以从此处接受的答案中看到的那样,Drawing a line/path on Google Maps ()方法用于在两个地理点之间绘制一条路径。如果要向地图添加标记(图钉),可以在覆盖图上执行此操作,有关如何向地图添加标记的详细信息,请参见此答案How to clear / reset an ItemizedOverlay in Android?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6173806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档