2

私は Mono for Android App に取り組んでおり、2 地点間のルート マップを表示したいと考えています。現在の場所を取得するために、 Xamarin.Android Map APIを実装しました。

現在の場所から目的地までのルートをプロットする方法がわかりませんでした。ライブラリやフレームワークはありますか?

4

1 に答える 1

8

Xamarin.Android Map API は、2012 年 12 月 3 日に非推奨となったGoogle Maps Android v1 APIに基づいています。本当に本当にGoogle Maps を実装したい場合は、 Google Maps Androidを使用するXamarin Maps and Location Demo v2を参照することをお勧めします。 v2 API . ただし、ルートの描画はまだ簡単な作業ではありません。ここで説明されているように、 Google Direction APIを使用してポリラインを取得し、それを使用して地図上に図形を描画できます(ところで、Direction API の無料使用の制限に注意してください)。

別のアプローチを提案します。Open Street Maps の使用に問題がなければ、OSM DroidライブラリとOSM ボーナス パックを使用することをお勧めします。Xamarin OSM Droid Binding sampleを見てください。ボーナス パックを含めるには、その JAR を Osm Droid Binding ソリューションに追加し、Metadata.xml に追加して 2 つの可視性の問題を修正します。

<attr path="/api/package[@name='org.osmdroid.bonuspack.routing']/class[@name='RoadLink']" name="visibility">public</attr>
<attr path="/api/package[@name='org.osmdroid.bonuspack.overlays']/class[@name='MapEventsOverlay']/method[@name='draw']" name="visibility">public</attr>

これをセットアップすると、ルートをプロットしてくれる非常に優れた Road Manager があります。以下は、サンプル コード スニペットです。

public class MainActivity : Activity
{
    private IMapController _mapController;
    private MapView _mapView;

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);

        _mapView = FindViewById<MapView>(Resource.Id.mapview);
        _mapView.SetTileSource(TileSourceFactory.DefaultTileSource);
        _mapView.SetMultiTouchControls(true);

        _mapController = _mapView.Controller;

        RoadManager roadManager = new MapQuestRoadManager();

        JavaList<GeoPoint> waypoints = new JavaList<GeoPoint>();
        waypoints.Add(new GeoPoint(51.776625, 19.454834)); //start point
        waypoints.Add(new GeoPoint(51.770839, 19.464962)); //end point
        Road road = roadManager.GetRoad(waypoints);

        PathOverlay roadOverlay = RoadManager.BuildRoadOverlay(road, _mapView.Context);
        _mapView.Overlays.Add(roadOverlay);
        _mapView.Invalidate();

    }
}

このトピックに関するその他のチュートリアルは、こちらにあります

于 2013-04-10T19:17:34.917 に答える