2015-12-15 1 views
0

J'ai plusieurs marqueurs sur une carte GMAP.NET qui sont mis à jour via un délégué sur un thread - comment puis-je m'assurer que lorsqu'une nouvelle coordonnée est passée du thread au délégué de mise à jour que le marqueur mises à jour est l'emplacement, ne crée pas un nouveau marqueur?Gmaps.NET Marqueurs dynamiques

code est ci-dessous

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

La latitude et la longitude sont fournis à partir du fil.

À la votre!

+0

On dirait que dans le code que vous créez un nouveau marqueur. Pourquoi parlez-vous de la mise à jour de votre question? –

+0

J'ai une unité GPS qui envoie ses coordonnées chaque seconde et ce qu'il faut montrer le mouvement mis à jour via un marqueur sur la carte. –

Répondre

0

Habituellement, avec les données des unités GPS, vous obtenez une sorte d'ID d'appareil. Utiliser ces données pour établir une distinction entre les différents marqueurs en utilisant le Tag de 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); 
}