在winform里面开发地图,在地图上任意设置两个点,起点和终点,希望通过contextMenuStrip建个菜单,显示设为起点和终点,最后怎么实现选中起点或终点,分别写一个事件还是怎么样?请教
这样,你先通过按钮来实现已知起点、途经点、终点,然后生成线路。
然后再考虑,如何通过鼠标事件来获取地理位置。
把整个过程拆分为两个步骤来做。
当你触发鼠标事件后,地图上只存在一个默认点,起点和终点的位置也是根据它来设置,根据它设置的话,我的起点设置时会出现一下,当设置终点是它就会消失,很不爽。。。我给你看下代码这是根据默认点获取坐标
void MainMap_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMouseDown = true;
if (currentMarker.IsVisible)
{
currentMarker.Position = MainMap.FromLocalToLatLng(e.X, e.Y);
var px = MainMap.MapProvider.Projection.FromLatLngToPixel(currentMarker.Position.Lat, currentMarker.Position.Lng, (int)MainMap.Zoom);
var tile = MainMap.MapProvider.Projection.FromPixelToTileXY(px);
Debug.WriteLine("MouseDown: geo: " + currentMarker.Position + " | px: " + px + " | tile: " + tile);
}
}
}这个是鼠标事件
int index = 0;
private void gMapControl2_MouseClick(object sender, MouseEventArgs e)
{
if (index == 0)
{
start = currentMarker.Position;
currentMarker = new GMarkerGoogle(start, GMarkerGoogleType.red);
currentMarker.IsHitTestVisible = true;
top.Markers.Add(currentMarker);
currentMarker.ToolTipMode = MarkerTooltipMode.Always;
currentMarker.ToolTipText = "起点";
index++;
return;
}
if (index == 1)
{
end = currentMarker.Position;
currentMarker = new GMarkerGoogle(end, GMarkerGoogleType.red);
currentMarker.IsHitTestVisible = true;
top.Markers.Add(currentMarker);
currentMarker.ToolTipMode = MarkerTooltipMode.Always;
currentMarker.ToolTipText = "终点";
index = 0;
}
}