Używam kodu GMap.NET do map i znaczników. Dodawanie znaczników i robienie czegokolwiek z mapą nie było problemem z usunięciem jednego znacznika z mapy, z którą mam problemy. Sprawdzałem wszędzie w Google, czy usunąć znacznik z mapy, ale usunięcie znacznika nie wydaje się być gorącym tematem.Usuwanie znaczników Gmap.net
Oto fragment kodu, którego używam do dodania.
private void AddMarker_ButtonClick(object sender, AddMarkerEventArgs e)
{
DBDictAdd("Marker", " ",e.Latitude, e.Longitude, true, "192.168.1.1");
m_dbMarkers.Insert(_table, dbmarkertable);
dbmarkertable.Clear();
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(e.Latitude, e.Longitude),
GMarkerGoogleType.green);
marker.ToolTip = new GMapRoundedToolTip(marker);
marker.ToolTipMode = MarkerTooltipMode.OnMouseOver;
marker.Tag = MarkerIndex;
marker.ToolTipText = (marker.Position.ToString());
markersOverlay.Markers.Add(marker);
MarkerIndex++;
}
Jak widać używam SQLite
przechowywać ID
i inne informacje do bazy danych dla znaczników. Używam podejścia bazodanowego, ponieważ będę musiał przechowywać więcej informacji z lokalizacją znacznika. Ta część kodu działa.
Problem polegający na wywołaniu informacji o znaczniku, więc mogę go usunąć. Wiem, że te 2 połączenia istnieją.
markersOverlay.Markers.Remove();
markersOverlay.Markers.RemoveAt();
użyłem komendy removeAt
ale musiałem to zrobić ręcznie za pomocą polecenia i zauważyłem ten removeAt(0)
zabiera go od pierwszego wejścia tej tablicy za każdym razem.
To co próbowałem dotąd:
private void uxRemoveMarkerButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Select the marker to remove.");
uxGmap.OnMarkerClick += new MarkerClick(uxGmap_OnMarkerClick);
}
private void uxGmap_OnMarkerClick(object sender, EventArgs e)
{
//int? mID = null;
//DataTable da = m_dbMarkers.GetDataTable("SELECT * from markers");
//GMapMarker marker = null;
//PointLatLng p = new PointLatLng(lat, lng);
//foreach (GMapMarker m in markersOverlay.Markers)
//{
// if (m.Position == p)
// marker = m;
//}
//markersOverlay.Markers.Remove(marker);
//MessageBox.Show("done");
//foreach (DataRow dr in da.Rows)
//{
// if (Convert.ToDouble(dr[3]) == lat)
// {
// MessageBox.Show(dr[3].ToString());
// //mID = Convert.ToInt32(dr[0]);
// }
//}
//markersOverlay.Markers.IndexOf(marker);
//mID= Convert.ToInt32(m_dbMarkers.ExecuteScalar("SELECT ID FROM markers"));
//m_dbMarkers.Delete(_table, String.Format("markers.ID = {0} ", mID));
//markersOverlay.Markers.RemoveAt(mID);
//MessageBox.Show(mID.ToString());
uxGmap.OnMarkerClick -= new MarkerClick(uxGmap_OnMarkerClick);
}
jakieś sugestie lub wskazówki, w jaki sposób mogę uzyskać identyfikator markera lub markera się po kliknięciu na niego, aby faktycznie usunąć go z mapy?
EDIT: zaktualizowałem AddMarker_ButtonClick