android - 我想在android中的多个geopoins之间绘制路径

标签 android

<分区>

Possible Duplicate:
Is there an API for Google Maps navigation in Android?

最近我将 android 开发作为一种爱好,希望开发一款可以使用 Google map 查找和跟踪用户位置的应用程序。

一旦应用程序拥有 GPS 锁,应用程序就可以通过使用覆盖类绘制路线来跟踪他们的移动。

我见过类似的开源应用程序,例如 Mytracks,但它们现在对我来说太复杂了。

他是我下面没有导入的代码。

我想做的是创建一组地理点。每次位置更改时,都会创建一个新的地理点。然后,我尝试使用 for 循环遍历每个地理点并在它们之间绘制一条路径。

理想情况下,我喜欢创建一个看起来像这张照片的应用程序

enter image description here

public class Tracking extends MapActivity implements LocationListener {

   LocationManager locman;
   LocationListener loclis;
   Location Location;
   private MapView map;

   List<GeoPoint> geoPointsArray = new ArrayList<GeoPoint>();
   private MapController controller;
   String provider = LocationManager.GPS_PROVIDER;
   double lat;
   double lon;


   @Override
      public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.map);
         initMapView();
         initMyLocation();
         locman = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
         //locman.requestLocationUpdates(provider,60000, 100,loclis);
         //Location = locman.getLastKnownLocation(provider);

      }
   /** Find and initialize the map view. */
      private void initMapView() {
         map = (MapView) findViewById(R.id.map);
         controller = map.getController();
         map.setSatellite(false);
         map.setBuiltInZoomControls(true);
      }

      /** Find Current Position on Map. */
      private void initMyLocation() {
         final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
         overlay.enableMyLocation();
         overlay.enableCompass(); // does not work in emulator
         overlay.runOnFirstFix(new Runnable() {
            public void run() {
               // Zoom in to current location
               controller.setZoom(24);
               controller.animateTo(overlay.getMyLocation());
            }
         });
         map.getOverlays().add(overlay);
      }

   @Override
   public void onLocationChanged(Location location) {
      if (Location != null){
         lat = Location.getLatitude();
          lon = Location.getLongitude();
          GeoPoint New_geopoint = new GeoPoint((int)(lat*1e6),(int)(lon*1e6));
          controller.animateTo(New_geopoint);

      }

   }
   class MyOverlay extends Overlay{
       public MyOverlay(){
       }   
       public void draw(Canvas canvas, MapView mapv, boolean shadow){
       super.draw(canvas, mapv, shadow);

        Projection projection = map.getProjection();
        Path p = new Path();
        for (int i = 0; i < geoPointsArray.size(); i++) {
        if (i == geoPointsArray.size() - 1) {
            break;
        }
        Point from = new Point();
        Point to = new Point();
        projection.toPixels(geoPointsArray.get(i), from);
        projection.toPixels(geoPointsArray.get(i + 1), to);
        p.moveTo(from.x, from.y);
        p.lineTo(to.x, to.y);
        }
        Paint mPaint = new Paint();
        mPaint.setStyle(Style.STROKE);
        mPaint.setColor(0xFFFF0000);
        mPaint.setAntiAlias(true);
        canvas.drawPath(p, mPaint);
        super.draw(canvas, map, shadow);
    }   
}

   @Override
   public void onProviderDisabled(String provider) {
      // TODO Auto-generated method stub

   }
   @Override
   public void onProviderEnabled(String provider) {
      // TODO Auto-generated method stub

   }
   @Override
   public void onStatusChanged(String provider, int status, Bundle extras) {
      // TODO Auto-generated method stub

   }
   @Override
   protected boolean isRouteDisplayed() {
      // TODO Auto-generated method stub
      return false;
   }}

最佳答案

阅读我的回答 HERE .

您正在查看的是创建一个 android 服务,每次您的位置更改时都会触发该服务并记录新位置,可能到数据库。同时创建一个应用程序,该应用程序将使用数据库中的数据在 map View 上绘制路径。

关于android - 我想在android中的多个geopoins之间绘制路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5243146/

相关文章:

java - 从 Double 转换为 float for android canvas

java - 如何使用 bytes_downloaded 和 bytes_total Android/Java 测量下载速度

android - 处理 ImageView 中的可点击区域

android - 收听 Intent ACTION_VIEW 的 Activity

java - libGDX 暂停运行几秒钟

android - 通过 WhatsApp 发送消息

Android合并两张图片

android - android :supportsRtl ="true" in AndroidManifest xml file有什么用

java - 在 Android Java 中传递上下文并不好,但是如何访问服务中的 Activity 呢?

java - 比较 Android 上的 SQLite 数据库