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();

纬度和经度由线程提供。

干杯!

Gmaps.NET动态标记

通常使用来自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);