Gmaps.NET动态标记
本文关键字:动态 NET Gmaps | 更新日期: 2023-09-27 18:26:50
我在GMAP.NET映射上有多个标记,这些标记是通过线程上的委托更新的-我如何确保当新坐标从线程传递到更新委托时,标记只是更新位置,而不是创建新标记?
代码低于
double lat = Convert.ToDouble(latlong[0]); //latitude string part of array
double longitude = Convert.ToDouble(latlong[1]); //longitude string part of array
GMapOverlay markersOverlay = new GMapOverlay("markers");
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(lat, longitude),
GMarkerGoogleType.green);
gmap2.Overlays.Clear();
markersOverlay.Markers.Add(marker);
gmap2.Overlays.Add(markersOverlay);
gmap2.Refresh();
纬度和经度由线程提供。
干杯!
通常使用来自GPS单元的数据,您会获得某种设备ID。通过使用GMapMarker
:的Tag
,使用这些数据来区分不同的标记
private void AddOrUpdateMarker(string tag, double lat, double lng)
{
// assuming "markersOverlay" is a field
var marker = markersOverlay.Markers.FirstOrDefault(m => m.Tag == tag);
if (marker == null)
{
marker = new GMarkerGoogle(new PointLatLng(lat, lng), GMarkerGoogleType.green);
marker.Tag = tag;
markersOverlay.Markers.Add(marker);
}
// update the position
marker.Position = new PointLatLng(lat, lng);
}
GMapOverlay markersOverlay = new GMapOverlay("marker");
GMapOverlay mark = new GMapOverlay("addmark");
GMapMarker addmark = new GMarkerGoogle(new PointLatLng(33.6491, 73.0833), GMarkerGoogleType.lightblue);
GMapMarker addmark1 = new GMarkerGoogle(new PointLatLng(33.6844, 73.0479), GMarkerGoogleType.lightblue);
mark.Markers.Add(addmark);
GMap.NET.WindowsForms.GMapMarker marker =
new GMap.NET.WindowsForms.Markers.GMarkerGoogle(
new GMap.NET.PointLatLng(33.626057, 73.071442),
GMap.NET.WindowsForms.Markers.GMarkerGoogleType.lightblue);
markersOverlay.Markers.Add(addmark1);
markersOverlay.Markers.Add(marker);
gMapControl1.Overlays.Add(mark);
// gMapControl1.Overlays.Clear();
gMapControl1.MarkersEnabled = true;
gMapControl1.Overlays.Add(markersOverlay);
gMapControl1.Refresh();
// gMapControl1.
gMapControl1.Position = new PointLatLng(33.626057, 73.071442);