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的方法。问题是,如果我再次加载地图,前一个标记将保留在地图上。 因此,我想在加载地图之前删除地图上的所有标记。 谢谢你的帮助。
答案 0 :(得分:1)
任何gmaps overlay中的'Markers'对象都是observableThreadSafeCollection。您需要做的就是添加以下行:
'markersOverlay.Markers.Clear()'
到loadMap()方法的顶部,应该这样做。
答案 1 :(得分:0)
根据文档over here,您应该在生成/添加标记时保留对所有标记的引用。要删除标记,您可以为每个标记将其地图设置为null
。