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 component clearOverlays() in Google Maps V3.如何删除标记

我解决了这个问题。我只需将通过 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) + ");";
    }

一切都以这种方式正常工作。