2014-09-02 71 views
0

我正在使用Google Maps API v3创建一个工具。我需要覆盖一些多边形和标记,并清除它们。将Google地图多边形/标记推向阵列不会推送数据

我试图按照类似于this的示例 - 将多边形/标记插入数组,然后从数组中删除它们,从而删除它们。

但是,当我将一个多边形或标记插入我的数组时,得到的数组值总是“未定义”,尽管我的多边形和标记在地图上正确显示。

注:我使用wicket从我的分贝到谷歌地图阅读WKT。下面

功能是遇到的问题 - 一个id被发送到的functions.php,所述WKT该ID被返回,并且它被映射 - 并应被推入数组,但并非如此。

我已经尝试将多边形/标记设置为一个变量,并将其推送到数组,但也没有工作。

var layersArr = []; 

function getGeo(id){ 
    $.ajax({ 
     url: 'functions.php', 
     type: 'POST', 
     data: { 
      request: 'getGeo', 
      id: id 
     }, 
     success: function(data){ 
      wkt.read(data); 

      switch(wkt.type){ 
       case 'polygon': 
       case 'multipolygon': 
        layersArr.push(new google.maps.Polygon(wkt.toObject()).setMap(map)); 
        break; 
       case 'point': 
        layersArr.push(new google.maps.Marker(wkt.toObject()).setMap(map)); 
        break; 
       default: 
        alert('Unrecognized wkt type'); 
        return; 
        break; 
      } 
     }, 
     error: function(jqXHR, text, error){ 
      ajaxError(jqXHR, text, error); 
     } 
    }); 
} 

回答

2

这是因为setMap()有根据Google Maps API v3没有返回值。

取而代之的是:

layersArr.push(new google.maps.Polygon(wkt.toObject()).setMap(map));

你需要这样做:

var poly = new google.maps.Polygon(wkt.toObject()); 
layersArr.push(poly); 
poly.setMap(map); 
+0

这就是它!谢谢! – ryantkelly 2014-09-02 20:15:06