Java OSMDroid PathOverlay

Java OSMDroid PathOverlay,java,android,osmdroid,stroke,Java,Android,Osmdroid,Stroke,今天我期待着如何在OSMDroid中使用PathOverlay 我找不到任何解释它是如何工作的 我需要创建一个建议的路线(不像导航系统),从一个点开始划一次,做一个“回路”,然后回到起点 就像这样(在谷歌地图中绘制): 我来这里是想问一下正确的方法是什么,指定一条自定义路径,做我想要的转弯 谢谢 它将在地图顶部为您绘制一系列直线,因此您需要知道所有路口的经纬度(以及偏离直线的任何地方)。将所有这些点添加到覆盖中。例如,此代码将在伦敦市中心绘制一个矩形框 public class Osmdroi

今天我期待着如何在OSMDroid中使用PathOverlay

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

我需要创建一个建议的路线(不像导航系统),从一个点开始划一次,做一个“回路”,然后回到起点

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

我来这里是想问一下正确的方法是什么,指定一条自定义路径,做我想要的转弯


谢谢

它将在地图顶部为您绘制一系列直线,因此您需要知道所有路口的经纬度(以及偏离直线的任何地方)。将所有这些点添加到覆盖中。例如,此代码将在伦敦市中心绘制一个矩形框

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

.

以下是如何在OSMBonusPack中使用多段线绘制道路的教程:

这很简单,我已经成功地在我的应用程序中使用了它

我基于该教程的代码如下所示:

    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();
RoadManager RoadManager=新的OSRMRoadManager();
ArrayList轨迹=新的ArrayList();
//TODO:在列表中填入您的轨迹点
Road Road=roadManager.getRoad(轨道);
多段线道路覆盖=RoadManager.buildRoadOverlay(道路,上下文);
mapView.getOverlays().add(道路覆盖);
mapView.invalidate();

我们需要在每个转弯处添加一个地质点吗?是的,它只画直线,所以每个轻微的转弯都需要一个新点。嗯,好的。谢谢你的回答!PathOverlay不受欢迎。有一个多段线的例子会很有帮助。