2015-07-20 204 views
0
private void loadMap() 
    { 
     MainMap.ShowCenter = false; 

     string cor = string.Empty; 
     using (MySqlConnection sqlConn = new MySqlConnection(myConnectionString)) 
     { 
      sqlConn.Open(); 
      using (MySqlCommand cmd = new MySqlCommand()) 
      { 
       cmd.CommandText = "SELECT * FROM event WHERE [email protected]"; 

       cmd.Connection = sqlConn; 
       cmd.Parameters.AddWithValue("@eventId", EventId); 
       using (MySqlDataReader reader = cmd.ExecuteReader()) 
       { 
        while (reader.Read()) 
        { 
         cor = reader.GetString("EventCor"); 
        } 
       } 
      } 
     } 
     string[] cord = cor.Split(','); 
     if (cor != string.Empty) 
     { 

      Lat = Convert.ToDouble(cord[0]); 
      Lng = Convert.ToDouble(cord[1]); 

      // Initialize map: 
      //GMap.NET.MapProviders.OpenCycleMapProvider 
      MainMap.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance; 
      GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly; 
      MainMap.Position = new PointLatLng(Lat, Lng); 

      GMapOverlay markersOverlay = new GMapOverlay("markers"); 

      GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(lat, lng),    
       GMarkerGoogleType.green); 


      markersOverlay.Markers.Add(marker); 
      MainMap.Overlays.Add(markersOverlay); 
     } 
    } 

上面是我加载gmap的方法。问题是,如果我再次加载地图,上一个标记将保留在地图上。 因此,我想在加载地图之前删除地图上的所有标记。 谢谢你的帮助。C#gmap清除所有标记

+0

你确定你的代码编译?我不这么认为,因为'cor = reader.GetString(“EventCor”)'行。 'GetString'应该将'int'作为参数,而不是'string'。 –

回答

0

根据文档over here,您应该在生成/添加它们时保留对所有标记的引用。要删除标记,可以将它们的地图设置为每个标记的null

1

任何gmaps覆盖图中的'标记'对象是一个observableThreadSafeCollection。所有你需要做的就是添加行:

'markersOverlay.Markers.Clear()' 

到你的loadMap()方法的顶部,应该这样做。

+0

这为我做了这份工作!谢谢。 – podomunro