未捕获的 InvalidValueError:不是数组

Posted

技术标签:

【中文标题】未捕获的 InvalidValueError:不是数组【英文标题】:Uncaught InvalidValueError: not an Array 【发布时间】:2015-12-19 06:27:10 【问题描述】:

我想知道是否有人可以在这里为我指出正确的方向,如果我硬编码 latitudelongitude,我正在使用 Google 地图尝试为用户隐藏分配的邮政编码区域 像这样完美运行;

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

但我正试图从 mysql 数据库中获取信息,例如 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】:

您需要先构造数组,然后在创建多边形时使用它。在您的代码中,您在“坐标”循环内创建了一个新多边形,因此您创建了一个多边形,每个循环上只有一个点。

//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)

【讨论】:

当你将 string 传递给 Polygon 数据数组时也会发生错误,所以请确保你已经使用了 浮动类型

以上是关于未捕获的 InvalidValueError:不是数组的主要内容,如果未能解决你的问题,请参考以下文章

如何修复Uncaught InvalidValueError:setPosition:不是LatLng或LatLngLiteral:在属性lat中:不是数字?

InvalidValueError:不是 HTMLInputElement 的实例

错误:InvalidValueError:setCenter:不是 LatLng 或 LatLngLiteral:在属性 lat:不是数字

为啥这不是 google.maps.Map 的地图实例? InvalidValueError:setMap:不是 Map 的实例;

InvalidValueError:initAutocomplete 不是 Google Places 和 Autocomplete API 的功能

错误:InvalidValueError:setCenter:不是LatLng或LatLngLiteral:在属性lat中:不是数字