Android-从MapView中的KML文件中绘制路径

时间:2012-08-13 18:08:36

标签: android google-maps google-api android-mapview kml

我已经在这方面工作了一段时间,但我仍然没有得到我正在寻找的结果。我正在尝试创建一个应用程序来显示我们的山地自行车道,这样你就可以看到你在它们身上的位置。我开始手动复制我的kml文件中的坐标并将它们作为Geopoints粘贴到这个代码一直工作直到我指向80.然后LogCat给出了一个错误拒绝大方法,我仍然有数百个去:

import java.util.List;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;

public class TrailMaps extends  MapActivity  {
    private List mapOverlays;
    private Projection projection;
    private MapController mc;
    private MapView mapView;
    private GeoPoint gP;
    private MyOverlay myoverlay;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);    
    mapView = (MapView) findViewById(R.id.mapview);//Creating an instance of MapView
    mapView.setBuiltInZoomControls(true);//Enabling the built-in Zoom Controls
    gP = new GeoPoint(43311836,-91777756);//Creating a GeoPoint
    mc = mapView.getController();
    mc.setCenter(gP);
    mc.setZoom(15);//Initializing the MapController and setting the map to center at the
    mapOverlays = mapView.getOverlays();
    projection = mapView.getProjection();
    myoverlay = new MyOverlay();
    mapOverlays.add(myoverlay);
    }

    class MyOverlay extends Overlay{ 
        public MyOverlay(){      
        }                     
      public void draw(Canvas canvas, MapView mapView, boolean shadow) {
         super.draw(canvas, mapView, shadow);
         Paint paint;
         paint = new Paint();
         paint.setDither(true);
         paint.setColor(Color.RED);
         paint.setStyle(Paint.Style.FILL_AND_STROKE);
         paint.setStrokeJoin(Paint.Join.ROUND);
         paint.setStrokeWidth(2);        

         GeoPoint gp1 = new GeoPoint(43311836,-91777756);
         GeoPoint gp2 = new GeoPoint(43311718,-91777699);
         GeoPoint gp3 = new GeoPoint(43311718,-91777699);
         GeoPoint gp4 = new GeoPoint(43311666,-91777627);
         GeoPoint gp5 = new GeoPoint(43311624,-91777541);                    

         Point pt1 = new Point();
         Point pt2 = new Point();
         Point pt3 = new Point();
         Point pt4 = new Point();
         Point pt5 = new Point();

         Path path1 = new Path();
         Path path2 = new Path();
         Path path3 = new Path();

         projection.toPixels(gp1,pt1);
         projection.toPixels(gp2, pt2);
         projection.toPixels(gp3, pt3);
         projection.toPixels(gp4, pt4);
         projection.toPixels(gp5, pt5);

         path1.moveTo(pt1.x, pt1.y);
         path1.lineTo(pt2.x, pt2.y);         
         path2.moveTo(pt3.x,pt3.y);
         path2.lineTo(pt4.x, pt4.y);         
         path3.moveTo(pt4.x,pt4.y);
         path3.lineTo(pt5.x,pt5.y);                               

         canvas.drawPath(path1, paint);
         canvas.drawPath(path2, paint);  
         canvas.drawPath(path3, paint);               
      }
   }
   @Override
   protected boolean isRouteDisplayed() {          
      return false;  
    }
}

然后我尝试解析kml文件,如下例所示:How to draw a path on a map using kml file?

但这是我的坐标,找到最近的街道并覆盖一条路线。我的坐标不在他们在公园外的街道上,所以我该怎么做呢?

现在我对任何建议持开放态度。是否有更好的方法来解析kml文件,在本地执行并转到http://maps.google.com/maps ?,将其作为图像覆盖,或完全覆盖整个新方向...任何建议都将非常感谢。

谢谢

0 个答案:

没有答案