1

私はしばらくこれに取り組んできましたが、探している結果はまだ得られていません。マウンテン バイクのトレイルを表示するアプリを作成しようとしています。まず、kml ファイルから座標を手動でコピーし、このコードを使用してジオポイントとして貼り付けました。このコードは、ポイント 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に移動するか、画像としてオーバーレイするか、まったく新しい方向に完全に...感謝。

ありがとう

4

0 に答える 0