私は Mono for Android App に取り組んでおり、2 地点間のルート マップを表示したいと考えています。現在の場所を取得するために、 Xamarin.Android Map APIを実装しました。
現在の場所から目的地までのルートをプロットする方法がわかりませんでした。ライブラリやフレームワークはありますか?
私は Mono for Android App に取り組んでおり、2 地点間のルート マップを表示したいと考えています。現在の場所を取得するために、 Xamarin.Android Map APIを実装しました。
現在の場所から目的地までのルートをプロットする方法がわかりませんでした。ライブラリやフレームワークはありますか?
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();
}
}
このトピックに関するその他のチュートリアルは、こちらにあります。