我要实现的是一个简单的查询功能,就是把商家用地标显示在谷歌地图上,然后查询的时候只显示要查询的商家,其他地标都隐藏。现在问题是查询的时候其他地标不隐藏。
      下面是我的源码
       var map; //全局GMap
       var geocoder = null;
       //创建一个自定义的Gicon对象
       var myIcon = new GIcon();
       myIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
       myIcon.shadow = "http://labs.google.com/ridefinder/image/mm_20_shadow.png";
       myIcon.iconSize = new GSize(20,25);
       myIcon.shadowSize = new GSize(22, 20);
       myIcon.iconAnchor = new GPoint(6, 20);
       myIcon.infoWindowAnchor = new GPoint(5, 1);
       var ersArray = []; //一组GMarker对象
       var geoPoint = []; //一组点对象       //网页加载时用于初始化Google地图
       function load() 
       {
           if (GBrowserIsCompatible())//检查浏览器兼容性
           //如果浏览器无法满足加载Google地图的最低条件,则不执行进一步的操作
           //这是编写Google地图网页的一个值得推荐的做法
           {
               //创建GMap2对象
               map = new GMap2(document.getElementById("map_canvas"));               //添加两个控件
               map.addControl(new GSmallMapControl());
               map.addControl(new GMapTypeControl());
              //map.addControl(new GLargeMapControl());
               
               //添加滚动缩放函数
               map.enableScrollWheelZoom();               geocoder = new GClientGeocoder();               var geoPoint0 = new GLatLng(30.542, 114.362);
               //为武汉大学添加地标er0
               er0 = new GMarker(geoPoint0, { icon: myIcon, title: "武汉大学" });                        
               //显示地图,并设置其中心、缩放值,此处将地图中心设在武汉大学
               map.setCenter(geoPoint0, 13);
               map.addOverlay(er0);
                
               var Longitude="<%=str_stk1 %>".split(";");
               var Latitude="<%=str_stk2 %>".split(";");
               var Name = "<%=str_stk3 %>".split(";");
               var newer = null;
               for (var i = 0; i < "<%=g_m %>"; i++) 
               {
                   newer = addOverLay(Latitude[i], Longitude[i], Name[i]);
                  
                   ersArray[i].push(newer); alert(ok);
               }
               var h;
               for (h in ersArray) 
               {
                   ersArray[h].setMap(map);
               }           }
       }
       function createMarkers(point, name, html, icon) 
       {
           //创建地标
           var er = new GMarker(point, { icon: icon });
           //以下部分用于监听单击事件
           GEvent.addListener(er, "click", function () {
               er.openInfoWindowHtml(html);
           }
        );
           return er;
       }       function addOverLay(x, y, z)
       {          
           var geoPoint = new GLatLng(x, y);
           //创建GMarker对象
           var ers0 = new GMarker(geoPoint, { icon: myIcon, title: z});
           //在地图上添加ers0地标
           map.addOverlay(ers0);
           return ers0;
       }
       var oldTargetMarker = null;
       function showAddress(address)
        {
           if (address == "")
           {
               alert("输入地址信息");
               return ;
           }
           if (oldTargetMarker) 
           {                
             //上一次查询的标注,本次查询时删除以免产生误解
               map.removeOverlay(oldTargetMarker);
           }           var Longitude = "<%=str_stk1 %>".split(";");
           var Latitude = "<%=str_stk2 %>".split(";");
           var Name = "<%=str_stk3 %>".split(";");           var m=0;
           var n =new Array();
           for (i = 0; i < "<%=g_m %>"; i++)
            {
               //if (Name[i].indexOf(address, 0) >= 0)
                //break;
                if (Name[i].indexOf(address, 0) >= 0) 
                {
                    n[m] = i;
                    m++;
                }                               
            }           if (m==0)
            {  //如果本地数据没有就查找map的数据源
                if (geocoder) 
               {
                   geocoder.getLatLng(address,
                   function (point) {
                       if (!point) {    //没有找到
                           alert(address + " not found");
                       }
                       else {
                           //在map数据源中找到
                           map.setCenter(point, 13);
                           var er = new GMarker(point);
                           oldTargetMarker = er;
                           map.addOverlay(er);
                           er.openInfoWindow(document.createTextNode(address));
                           var x;
                           for (x in ersArray)
                            {
                               ersArray[x].setMap(null);
                           }
                       }
                   });
               }
           }          else 
          {              for (var j = 0; j < m; j++)
              {                  //在本地数据中找到
                  var locationY = Longitude[n[j]];
                  var locationX = Latitude[n[j]];
                  var target = new GLatLng(locationX, locationY);
                  var er = new GMarker(target);
                  oldTargetMarker = er;
                  map.setCenter(target, 13);
                  map.addOverlay(er);
                  er.openInfoWindow(document.createTextNode(Name[n[j]]));
                  var y;
                  for (y in ersArray)
                   {
                      ersArray[y].setMap(null);
                  }             
              }
          }
       }
    
       function GBrowserIsCompatible() { return true; }