我想知道是否有人可以在这里为我指明正确的方向,如果我对 latitude 和 longitude 进行硬编码,我正在使用 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/