0

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

纬度和经度是从线程提供的。

干杯!

4

2 回答 2

0

通常使用来自 GPS 单元的数据,您会获得某种设备 ID。Tag使用该数据通过of区分不同的标记GMapMarker

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);
}
于 2015-12-16T13:27:01.617 回答
-1
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);
于 2019-01-20T19:52:06.053 回答