2015-12-15 48 views
0

我有一个GMAP.NET地图上的多个标记通过线程上的委托更新 - 我怎样才能确保,当一个新的坐标从线程传递给更新委托,标记只是更新是位置,而不是创建一个新的标记?Gmaps.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(); 

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

干杯!

+0

它看起来像正在创建一个新的标记代码。你为什么在谈论你的问题中的更新? –

+0

我有一个GPS单元,每秒发送一次坐标,并通过地图上的一个标记显示更新后的移动。 –

回答

0

通常使用来自GPS单元的数据,您会得到某种设备ID。使用此数据通过使用GMapMarkerTag不同的标记来区分:

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