OSMDroid PathOverlay(OSMDroid PathOverlay)

2019-06-23 13:27发布

今天,我在寻找如何在OSMDroid使用PathOverlay前进。

我找不到它是如何工作的任何解释。

我需要在一个点来创建一个建议路线(不喜欢导航系统),只是一个行程开始时,做了一个“回路”,然后返回起点。

就像这样(在谷歌地图绘制):

我在这里要问什么是应该做这种正确的方法,指定自定义路径,做我想要的转弯。

谢谢!

Answer 1:

这将绘制一系列的直线为你在地图的上方,所以你需要知道你的所有路口的纬度和经度(和他们到处弯从直线距离)。 所有这些点添加到重叠。 作为一个例子,该代码将借鉴伦敦中部的一个矩形框。

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



Answer 2:

下面是本教程如何与折线绘制整条道路OSMBonusPack: https://github.com/MKergall/osmbonuspack/wiki/Tutorial_1

这是很容易的,我在我的应用程序已经成功地使用这一点。

根据该教程我的代码看起来像这样:

    RoadManager roadManager = new OSRMRoadManager();

    ArrayList<GeoPoint> track = new ArrayList<>();
    // TODO: Fill the list with your track points

    Road road = roadManager.getRoad(track);
    Polyline roadOverlay = RoadManager.buildRoadOverlay(road, context);
    mapView.getOverlays().add(roadOverlay);
    mapView.invalidate();


文章来源: OSMDroid PathOverlay