2012-07-24 113 views
1

我正在创建一个Android应用程序来映射我们当地的山地自行车道。坐标来自KML文件。到目前为止,我已经绘制并创建了11个GeoPoints的路径。但是,我有数百个坐标来映射。这是我迄今为止所做的代码。这有效,但它非常乏味,我还有数百项工作要做。有没有更好的方法来做到这一点?有没有办法让我的覆盖层类从我的kml文件中读取坐标?任何其他想法或想法都会受到赞赏。在Android中绘制kml坐标Google Map

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); 
    GeoPoint gp6 = new GeoPoint(43311582,-91777455); 
    GeoPoint gp7 = new GeoPoint(43311533,-91777369); 
    GeoPoint gp8 = new GeoPoint(43311489,-91777249); 
    GeoPoint gp9 = new GeoPoint(43311445,-91777136); 
    GeoPoint gp10 = new GeoPoint(43311404,-91776996); 
    GeoPoint gp11 = new GeoPoint(43311410,-91776891); 
    Point pt1 = new Point(); 
    Point pt2 = new Point(); 
    Point pt3 = new Point(); 
    Point pt4 = new Point(); 
    Point pt5 = new Point(); 
    Point pt6 = new Point(); 
    Point pt7 = new Point(); 
    Point pt8 = new Point(); 
    Point pt9 = new Point(); 
    Point pt10 = new Point(); 
    Point pt11 = new Point(); 

    Path path1 = new Path(); 
    Path path2 = new Path(); 
    Path path3 = new Path(); 
    Path path4 = new Path(); 
    Path path5 = new Path(); 
    Path path6 = new Path(); 
    Path path7 = new Path(); 
    Path path8 = new Path(); 
    Path path9 = new Path(); 

    projection.toPixels(gp1,pt1); 
    projection.toPixels(gp2, pt2); 
    projection.toPixels(gp3, pt3); 
    projection.toPixels(gp4, pt4); 
    projection.toPixels(gp5, pt5); 
    projection.toPixels(gp6, pt6); 
    projection.toPixels(gp7, pt7); 
    projection.toPixels(gp8, pt8); 
    projection.toPixels(gp9, pt9); 
    projection.toPixels(gp10, pt10); 
    projection.toPixels(gp11, pt11); 

    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); 

    path4.moveTo(pt5.x, pt5.y); 
    path4.lineTo(pt6.x, pt6.y); 

    path5.moveTo(pt6.x, pt6.y); 
    path5.lineTo(pt7.x, pt7.y); 

    path6.moveTo(pt7.x, pt7.y); 
    path6.lineTo(pt8.x, pt8.y); 

    path7.moveTo(pt8.x, pt8.y); 
    path7.lineTo(pt9.x, pt9.y); 

    path8.moveTo(pt9.x,pt9.y); 
    path8.lineTo(pt10.x, pt10.y); 

    path9.moveTo(pt10.x, pt10.y); 
    path9.lineTo(pt11.x, pt11.y); 

    canvas.drawPath(path1, paint); 
    canvas.drawPath(path2, paint); 
    canvas.drawPath(path3, paint); 
    canvas.drawPath(path4, paint); 
    canvas.drawPath(path5, paint); 
    canvas.drawPath(path6, paint); 
    canvas.drawPath(path7, paint); 
    canvas.drawPath(path8, paint); 
    canvas.drawPath(path9, paint); 

    } 
} 

回答

0

难道你不能只读KML文件,并通过点循环?

+0

对不起,我是新来的应用程序编程。你会如何做到这一点? – 2012-07-24 21:22:33

+0

这实际上可以在这里的答案中解释。你应该真的让自己一本关于Java的书,并且学习它。 – CaseyB 2012-07-24 21:26:21

+0

我同意,是否有任何资料可供参考? – 2012-07-25 15:17:44