OSMDroid PathOverlay

Сегодня я с нетерпением жду, как использовать PathOverlay в OSMDroid.

Я не могу найти какое-либо объяснение того, как это работает.

Мне нужно создать предложенный маршрут (не похожий на навигационную систему), просто штрих, начинающийся в точке, выполните «схему». и затем вернитесь в исходную точку.

Просто так (нарисовано в Google Maps):

Circuit

Я здесь, чтобы спросить, как правильно сделать это, указав собственный путь и выполнив нужные мне повороты.

Спасибо!

Ответы на вопрос(2)

Решение Вопроса

Он нарисует для вас серию прямых линий в верхней части карты, поэтому вам нужно знать широту и долготу всех ваших дорожных развязок (и везде, где они отклоняются от прямой линии). Добавьте все эти точки в оверлей. Например, этот код нарисует прямоугольную рамку в центре Лондона.

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

.

 16 апр. 2012 г., 12:28
Да, он рисует только прямые линии, поэтому каждый небольшой изгиб будет нуждаться в новой точке.
 silentw16 апр. 2012 г., 11:22
Нужно ли добавлять GeoPoint на каждый ход, который мы хотим сделать?
 30 окт. 2015 г., 20:03
PathOverlay устарела. Было бы полезно иметь пример с Polyline.
 29 нояб. 2013 г., 12:49
Если вы не используете дорожного менеджера в бонусном пакете osmdroid
 silentw16 апр. 2012 г., 13:13
Хм, хорошо. Спасибо за ваш ответ!

Вот учебник, как рисовать дорогу с помощью Polyline в 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();
 14 дек. 2015 г., 14:36
хорошо, спасибо :-)
 14 дек. 2015 г., 14:28
Добавлен мой пример кода, основанный на учебной ссылке

Ваш ответ на вопрос