我正在使用Gmap.Net.Winforms来显示winform项目中的路由路径列表中存在的路由。我在Map上正确地显示了路由路径,但现在我想在这些路由路径上通过箭头来显示方向路径。我不知道如何在路径上正确地显示从第一个点到下一个点的路径。我想也许我应该使用两点之间的Angular ,但不知道怎么用
for (int i = 1; i < mainPoints.Count; i++)
{
double lat = (mainPoints[i - 1].Lat + mainPoints[i].Lat) / 2;
double lng = (mainPoints[i - 1].Lng + mainPoints[i].Lng) / 2;
double xDiff = mainPoints[i-1].Lat + mainPoints[i].Lat;
double yDiff = mainPoints[i-1].Lng + mainPoints[i].Lng;
double degree = Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI;
GMarkerCross cm = new GMarkerCross(new PointLatLng(lat, lng));
cm.Pen = new Pen(System.Drawing.Color.Transparent);
cm.ToolTipText = ">";
cm.ToolTip.Offset = new System.Drawing.Point(0, 0);
cm.ToolTip.Font = new Font("Comic Sans MS", 25f, FontStyle.Bold | FontStyle.Italic);
cm.ToolTip.Foreground = new SolidBrush(System.Drawing.Color.Red);
cm.ToolTip.Fill = new SolidBrush(System.Drawing.Color.Transparent);
cm.ToolTipMode = MarkerTooltipMode.Always;
cm.ToolTip.Stroke = new Pen(System.Drawing.Color.Transparent);
markersLayer.Markers.Add(cm);
}
gmap.ZoomAndCenterRoute(route);
字符串
1条答案
按热度按时间qvtsj1bj1#
首先选择一个合适的形状来显示方向,最好是透明背景:
然后把这个形状作为自定义标记在中点。所选的形状方向是向上的,这意味着当方位为零时(即朝向北极)需要零旋转。
计算中点:
字符串
计算方位:
型
旋转形状:
型
样本数据:
型
绘制路线,在每个线段的中点插入方向,并与线段Angular 对齐:
型
结果:
放大视图: