Gmap.net 删除标记
Gmap.net marker removal
我正在为地图和标记使用 GMap.NET 代码。添加标记和对地图做任何事情都不是问题,它从我遇到问题的地图中删除单个标记。我到处研究 Google 从地图上删除标记,但删除标记似乎不是一个热门话题。
这是我用来添加的代码片段。
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++;
}
如您所见,我正在使用 SQLite
将 ID
和其他信息存储到标记数据库中。我正在使用数据库方法,因为我需要用标记位置存储更多信息。这部分代码有效。
我遇到的问题是调用标记信息以便将其删除。我知道这 2 个调用存在。
markersOverlay.Markers.Remove();
markersOverlay.Markers.RemoveAt();
我使用了 removeAt
命令,但我必须手动执行它,并且注意到使用 removeAt(0)
命令每次都会从该数组的第一个条目中获取它。
这是我目前尝试过的方法:
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);
}
关于当我点击它以实际将其从地图中删除时如何获取标记 ID 或标记本身的任何建议或指导?
编辑:
我更新了 AddMarker_ButtonClick
我找到的从地图上删除标记的解决方案:
GMap.Net 有一个您可以订阅的 MarkerClick
活动。在我的表单中,这是我使用的代码以及我将其放置在表单代码中的位置。
Public Form1()
{
uxGmap.OnMarkerClick += new MarkerClick(uxGmap_OnMarkerClick);
}
里面的代码uxGmap_OnMarkerClick
private void uxGmap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
currentMarker = item;
uxRemoveMarkerButton.Enabled = true;
}
我有一个名为 currentMarker
的全局 GMapMarker
,它存储您单击的 item
标记。我还启用了删除表单上标记的按钮。
然后我使用按钮单击从地图上删除标记:
private void uxRemoveMarkerButton_Click(object sender, EventArgs e)
{
int? mID = null;
if(currentMarker != null)
{
mID = Convert.ToInt32(currentMarker.Tag);
markersOverlay.Markers.Remove(currentMarker);
currentMarker = null;
}
m_dbMarkers.Delete(_table, String.Format("markers.ID = {0} ", mID));
uxRemoveMarkerButton.Enabled = false;
}
GMapMarker
有一个 Tag
属性 到我可以将标记 ID 存储到标记的地方。然后,我从全局 currentMarker.Tag
中提取该 ID,并将其存储到本地 int mID
。我使用此 mID
删除带有我存储在我拥有的 sqlite 数据库中的标记 ID 的行。我还禁用按钮以在单击标记之前不允许任何用户错误。
我正在为地图和标记使用 GMap.NET 代码。添加标记和对地图做任何事情都不是问题,它从我遇到问题的地图中删除单个标记。我到处研究 Google 从地图上删除标记,但删除标记似乎不是一个热门话题。
这是我用来添加的代码片段。
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++;
}
如您所见,我正在使用 SQLite
将 ID
和其他信息存储到标记数据库中。我正在使用数据库方法,因为我需要用标记位置存储更多信息。这部分代码有效。
我遇到的问题是调用标记信息以便将其删除。我知道这 2 个调用存在。
markersOverlay.Markers.Remove();
markersOverlay.Markers.RemoveAt();
我使用了 removeAt
命令,但我必须手动执行它,并且注意到使用 removeAt(0)
命令每次都会从该数组的第一个条目中获取它。
这是我目前尝试过的方法:
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);
}
关于当我点击它以实际将其从地图中删除时如何获取标记 ID 或标记本身的任何建议或指导?
编辑:
我更新了 AddMarker_ButtonClick
我找到的从地图上删除标记的解决方案:
GMap.Net 有一个您可以订阅的 MarkerClick
活动。在我的表单中,这是我使用的代码以及我将其放置在表单代码中的位置。
Public Form1()
{
uxGmap.OnMarkerClick += new MarkerClick(uxGmap_OnMarkerClick);
}
里面的代码uxGmap_OnMarkerClick
private void uxGmap_OnMarkerClick(GMapMarker item, MouseEventArgs e)
{
currentMarker = item;
uxRemoveMarkerButton.Enabled = true;
}
我有一个名为 currentMarker
的全局 GMapMarker
,它存储您单击的 item
标记。我还启用了删除表单上标记的按钮。
然后我使用按钮单击从地图上删除标记:
private void uxRemoveMarkerButton_Click(object sender, EventArgs e)
{
int? mID = null;
if(currentMarker != null)
{
mID = Convert.ToInt32(currentMarker.Tag);
markersOverlay.Markers.Remove(currentMarker);
currentMarker = null;
}
m_dbMarkers.Delete(_table, String.Format("markers.ID = {0} ", mID));
uxRemoveMarkerButton.Enabled = false;
}
GMapMarker
有一个 Tag
属性 到我可以将标记 ID 存储到标记的地方。然后,我从全局 currentMarker.Tag
中提取该 ID,并将其存储到本地 int mID
。我使用此 mID
删除带有我存储在我拥有的 sqlite 数据库中的标记 ID 的行。我还禁用按钮以在单击标记之前不允许任何用户错误。