Subgurim component clearOverlays() in Google Maps V3.如何删除标记
本文关键字:何删除 删除 Maps clearOverlays component in Google Subgurim V3 | 更新日期: 2023-09-27 18:34:27
我在 C# Web 窗体项目中使用的是最新版本的 GoogleMaps.Subgurim.NET dll。我想知道如何使用该组件在 v3 中获得 Google Maps v2 的 clearOverlays() 方法的效果。让我举个例子;在地图单击事件中,我曾经删除所有现有标记,然后使用信息窗口放置一个新标记:
protected string GMap1_Click(object s, GAjaxServerEventArgs e)
{
GMarker marker = new GMarker(e.point);
string strInfoWindow = string.Format(
@"<b>Mytext<br> "lat = {0}<br/>lng = {1}",
e.point.lat,
e.point.lng);
GInfoWindow window = new GInfoWindow(marker,
strInfoWindow,
true);
return
e.map+".clearOverlays();"+
window.ToString(e.map);
}
代码中唯一需要注意的部分是最后三行。您能否告诉我在这种情况下如何更改我的 javascript 代码以删除所有标记?
提前感谢您的任何帮助。纽科萨斯
我解决了这个问题。我只需将通过 Subgurim 组件创建的标记推送到数组中,然后调用附加到删除它们的映射控件的自定义 js 函数。下面是用于附加函数的代码:
StringBuilder sb = new StringBuilder();
sb.Append("var markersArray=[];");
sb.Append("function clearOverlays() {");
sb.Append(" for (var i = 0; i < markersArray.length; i++ ) {");
sb.Append(" markersArray[i].setMap(null);");
sb.Append(" }");
sb.Append(" markersArray = [];");
sb.Append("}");
GMap1.Add(sb.ToString());
这就是我的Gmap1_Click事件现在的样子:
protected string GMap1_Click(object s, GAjaxServerEventArgs e)
{
GMarker marker = new GMarker(e.point);
string strInfoWindow = string.Format(
@"point<br />lat = {0}<br/>lng = {1}",
e.point.lat,
e.point.lng);
GInfoWindow window = new GInfoWindow(marker,
strInfoWindow,
true);
return
"clearOverlays();" +
window.ToString(e.map)+
"markersArray.push(" + GMap1.getGMapElementById(marker.ID) + ");";
}
一切都以这种方式正常工作。