未捕获的InvalidValueError:不是数组

时间:2015-09-22 10:06:52

标签: javascript php jquery mysql google-maps

我想知道是否有人可以指出我正确的方向,如果我硬编码纬度经度它像这样完美;

var triangleCoordsLS12 = [
        {lng: -1.558585,  lat: 53.796545}, 
        {lng: -1.558585,  lat: 53.796545},
        .....
];

但是我试图从PHP数据库获取PHP和JSON的信息,这样;

$.ajax({
          type:'POST',
          url:'test.php',
          success:function(data){
             var resultArray = JSON.parse(data);
               for (var i=0; i<resultArray.length; i++) {
                  var triangleCoordsLS12 = new google.maps.LatLng(resultArray[i].lat, resultArray[i].lng);

          if(location.uname == 'John Smith'){
            bermudaTriangleLS12 = new google.maps.Polygon({
                paths: triangleCoordsLS12,
                strokeColor: '#ff0000',
                strokeOpacity: 0.8,
                strokeWeight: 1,
                fillColor: '#ff0000',
                fillOpacity: 0.30
            });
           bermudaTriangleLS12.setMap(map);
        } else if(location.uname == 'Bruce Brassington'){
             bermudaTriangleLS12 = new google.maps.Polygon({
               paths: triangleCoordsLS12,
               strokeColor: '#FFcc00',
               strokeOpacity: 0.8,
               strokeWeight: 1,
               fillColor: '#FFcc00',
               fillOpacity: 0.25
             });
            bermudaTriangleLS12.setMap(map);                 
        }
      } 
    }
 })  

我在这些行上收到错误Uncaught InvalidValueError: not an Array: -

bermudaTriangleLS12 = new google.maps.Polygon({

我知道错误不是Array所以我如何将这些点放在数组中?我非常感谢你的帮助。

1 个答案:

答案 0 :(得分:4)

首先需要构造数组,然后在创建多边形时使用它。在您的代码中,您在&#34;坐标&#34;内创建一个新的多边形。循环,所以你创建一个多边形,每个循环只有一个点。

//build the array
var resultArray = JSON.parse(data);
var triangleCoordsLS12 = []
for (var i=0; i<resultArray.length; i++) {
    triangleCoordsLS12[i] = new google.maps.LatLng(resultArray[i].lat, resultArray[i].lng);
}
//use the array as coordinates
bermudaTriangleLS12 = new google.maps.Polygon({
         paths: triangleCoordsLS12,
         trokeColor: '#ff0000',
         strokeOpacity: 0.8,
         strokeWeight: 1,
         fillColor: '#ff0000',
         fillOpacity: 0.30
});
bermudaTriangleLS12.setMap(map);

伪代码我的例子:

For each coordinate {
    add coordinate to array
}
construct-polygon(coordinate array)

您的代码:

For each coordinate {
    construct-polygon(coordinate)
}