首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OSMDroid PathOverlay

OSMDroid PathOverlay
EN

Stack Overflow用户
提问于 2012-04-11 18:58:42
回答 2查看 17.1K关注 0票数 8

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

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

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

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

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-12 00:12:22

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

代码语言:javascript
复制
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);
    }
}

票数 29
EN

Stack Overflow用户

发布于 2015-12-14 20:58:20

以下是如何在OSMBonusPack中使用折线绘制道路的教程:https://github.com/MKergall/osmbonuspack/wiki/Tutorial_1

这非常简单,我已经在我的应用程序中成功地使用了这一点。

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

代码语言:javascript
复制
    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();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10104581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档