javascript - 未捕获的 InvalidValueError : not an Array

标签 javascript php jquery mysql google-maps

我想知道是否有人可以在这里为我指明正确的方向,如果我对 latitudelongitude 进行硬编码,我正在使用 Google map 尝试为用户着色分配的邮政编码区域 这样就完美了;

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

但我正在尝试通过 PHP 和 JSON 像这样从 MySQL 数据库获取信息;

$.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 那么我该如何将这些点放入数组中呢?非常感谢您的帮助。

最佳答案

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

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

关于javascript - 未捕获的 InvalidValueError : not an Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32714122/

相关文章:

php - 如何在同一天在php中获取下个月

javascript - 使用 JS 触发 Bootstrap 下拉菜单

jquery - 图像 slider Div 错误

javascript - React-Native:ScrollView、refs 和自定义组件

javascript - 如何在整个 session 期间保留 JWT token 直到用户注销?

Javascript数组推送和显示

php - yii2:如何使用超棒的字体图标?

javascript - 在移动到另一个 Google Sheet 之前将数据插入 foreach 数组

php - 复杂(ish)SQL 连接和计数查询

javascript - 在所有其他脚本之后加载 javascript