8

今日は、OSMDroidでPathOverlayを使用する方法を楽しみにしています。

それがどのように機能するかについての説明が見つかりません。

提案されたルート(ナビゲーションシステムとは異なります)を作成する必要があります。あるポイントで開始するストロークだけで、「回路」を実行してから開始ポイントに戻ります。

ちょうどこのように(グーグルマップで描かれています):

回路

私はここで、これを行う正しい方法を尋ね、カスタムパスを指定し、必要なターンを実行します。

ありがとう!

4

2 に答える 2

29

地図の上に一連の直線が描画されるため、すべての道路のジャンクション(および直線から離れる場所)の緯度と経度を知る必要があります。これらすべてのポイントをオーバーレイに追加します。例として、このコードはロンドン中心部に長方形のボックスを描画します。

public class OsmdroidDemoMap extends Activity {

    private MapView mMapView;
    private MapController mMapController;
    int mIncr = 10000;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.osm_main);
        mMapView = (MapView) findViewById(R.id.mapview);
        mMapView.setTileSource(TileSourceFactory.MAPNIK);
        mMapView.setBuiltInZoomControls(true);
        mMapView.setMultiTouchControls(true);
        mMapController = mMapView.getController();
        mMapController.setZoom(13);
        GeoPoint gPt0 = new GeoPoint(51500000, -150000);
        GeoPoint gPt1 = new GeoPoint(gPt0.getLatitudeE6()+ mIncr, gPt0.getLongitudeE6());
        GeoPoint gPt2 = new GeoPoint(gPt0.getLatitudeE6()+ mIncr, gPt0.getLongitudeE6() + mIncr);
        GeoPoint gPt3 = new GeoPoint(gPt0.getLatitudeE6(), gPt0.getLongitudeE6() + mIncr);
        mMapController.setCenter(gPt0);
        PathOverlay myPath = new PathOverlay(Color.RED, this);
        myPath.addPoint(gPt0);
        myPath.addPoint(gPt1);
        myPath.addPoint(gPt2);
        myPath.addPoint(gPt3);
        myPath.addPoint(gPt0);
        mMapView.getOverlays().add(myPath);
    }
}

于 2012-04-11T16:12:22.437 に答える