【发布时间】:2020-02-05 13:10:13
【问题描述】:
所以我要做的是使用 GMap.NET nugget 在 winforms 应用程序上显示路线。 但我遇到的问题是它没有显示使用道路的路线。它从字面上显示了 2 点之间的最短距离,所以为了更准确,我对谷歌地图方向做了一个额外的 API 调用。所以我有一些额外的点让它更准确,但仍然在 2 点之间它只是一条直线,而不是在道路上。
在这里你可以看到我是如何加载积分的。
public void ShowRoute(Coordinate[] coordinates)
{
if (coordinates.Length > 1)
{
List<PointLatLng> points = new List<PointLatLng>();
foreach (var cor in coordinates)
{
Coordinate c = geo.ConvertCoordinates(cor);
var corstring = geo.GetAdresByCor(c);
var point = new PointLatLng(Convert.ToDouble(c.Latitude.Replace(".", ",")), Convert.ToDouble(c.Longitude.Replace(".", ",")));
var marker = new GMarkerGoogle(point, GMarkerGoogleType.pink_pushpin);
routeMarkers.Markers.Add(marker);
}
var routes = geo.DirectionsByCor(coordinates);
foreach (var route in routes)
{
foreach (var step in route.Legs[0].Steps)
{
var point = new PointLatLng(step.EndLocation.Latitude, step.EndLocation.Longitude);
points.Add(point);
}
}
var r = new GMapRoute(points, "route");
var routesOverlay = new GMapOverlay("routes");
routesOverlay.Routes.Add(r);
map.Overlays.Add(routeMarkers);
map.Overlays.Add(routesOverlay);
}
}
这是我的地图的加载方式。
private void map_Load(object sender, EventArgs e)
{
GMapProviders.GoogleMap.ApiKey = Properties.Settings.Default.ApiKey;
geo = new GeocoderXY();
map.MouseWheelZoomEnabled = true;
map.DragButton = MouseButtons.Left;
map.MapProvider = GMapProviders.GoogleMap;
lng = 3.7074218;
lat = 51.008157;
GMapMarker marker = new GMarkerGoogle(new PointLatLng(lat, lng), GMarkerGoogleType.blue_pushpin);
searchMarker = marker;
markers.Markers.Add(marker);
markers.Markers.Add(mouseMarker);
map.Position = new NET.PointLatLng(lat, lng);
map.MouseWheelZoomType = NET.MouseWheelZoomType.MousePositionWithoutCenter;
map.MinZoom = 5;
map.MaxZoom = 100;
map.Zoom = 15;
map.ShowCenter = false;
}
我看不出我做错了什么,如果有人看到了,请告诉我! 谢谢
【问题讨论】:
-
谢谢,但这似乎不是我遇到的问题。我认为问题出在我安装 GMap.NET 的 Nugget 包上
-
链接说:distancematrix API 支持 travel_mode 作为参数 - 但是您的选项是驾驶、步行、骑自行车或过境,因此 API 无用。您使用的是旅行模式吗?
-
我不为此使用 Distancematrix API。我使用 Directions API,因为 Distancematrix API 不会给我路线点,而方向 API 会。但是是的,我正在使用旅行模式作为驾驶。
-
您是否按照建议尝试了几何库。
标签: c# winforms google-maps gmap.net