C#gmap清除所有标记

时间:2015-07-20 06:28:00

标签: c# google-maps

  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 EventId=@eventId";

                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的方法。问题是,如果我再次加载地图,前一个标记将保留在地图上。 因此,我想在加载地图之前删除地图上的所有标记。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

任何gmaps overlay中的'Markers'对象都是observableThreadSafeCollection。您需要做的就是添加以下行:

'markersOverlay.Markers.Clear()'

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

答案 1 :(得分:0)

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