我正在为 Android 应用程序开发 Mono,并希望显示两点之间的路线图。我实现了他们的Xamarin.Android Map API来获取当前位置。
我不知道如何绘制从当前位置到目的地的路线。有没有库或框架?
我正在为 Android 应用程序开发 Mono,并希望显示两点之间的路线图。我实现了他们的Xamarin.Android Map API来获取当前位置。
我不知道如何绘制从当前位置到目的地的路线。有没有库或框架?
Xamarin.Android Map API 基于Google Maps Android v1 API ,该 API自 2012 年 12 月 3 日起弃用。如果您真的非常想实施 Google Maps,我建议您查看使用Google Maps Android的Xamarin Maps and Location Demo v2 v2 API。但是绘制路线仍然不是一件容易的事 - 您可以使用Google Direction API获取折线并使用它在地图上绘制形状,如此处所述(顺便说一下,Direction API 免费使用的限制)。
我建议采用不同的方法。如果您可以使用 Open Street Maps,我肯定会选择OSM Droid库以及OSM Bonus Pack,它为您带来了所有的魔力。看看Xamarin OSM Droid Binding 示例。要包含 Bonus Pack,您可以将其 JAR 添加到 Osm Droid Binding 解决方案并通过添加到 Metadata.xml 来修复两个可见性问题:
<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>
有了这个设置,就有一个非常好的道路管理器,它会为我们绘制一条路线。下面是一个示例代码片段:
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();
}
}
有关此主题的更多教程位于此处。