我正在尝试制作一个程序,根据存储在数据库中的给定点在Google Maps API v3上构建边界区域。我在PHP中完成了这项工作但无法运行检查以查看某个点是否在边界内。
我已经在JavaScript中重新创建了它但是我已经在显示要点的情况下打了一个墙。我把这些点拉回来并作为一个JS变量回应:
Example:
var boundArray = ["52.6,1.19","52.7,1.20","52.7,1.19","52.6,1.20"];
我正在尝试遍历数组并为多边形构建'path'属性,但是它不允许我在数组中运行for循环而我无法在替代方法中构造它。
function grabPoints() {
var catchmentCoords = [
for(var i=0; i<(boundArray.length-1); i++){
new google.maps.LatLng(boundArray[$i]),
}
new google.maps.LatLng(boundArray[boundArray.length])
];
}
上面的函数应在变量中构建一个点列表,如下所示,用于一次显示所有点。
var catchmentCoords = [
new google.maps.LatLng(52.6,1.19),
new google.maps.LatLng(52.7,1.20),
new google.maps.LatLng(52.7,1.19),
new google.maps.LatLng(52.6,1.20)
];
如果有助于该属性打算在API的面函数中使用。
catchmentArea = new google.maps.Polygon({
paths: catchmentCoords
});
此外,如果有更好的方法来搜索lat / long是否在多边形内部,那么我们将不胜感激。
答案 0 :(得分:1)
google.maps.LatLng需要2个数字作为参数,而不是用逗号分隔的2个数字的字符串表示。
function grabPoints() {
var catchmentCoords = [];
for(var i=0; i<(boundArray.length); i++){
var coordsStr = boundArray[i];
var coords = coordsStr.split(",");
catchmentCoords.push(new google.maps.LatLng(coords[0],coords[1])));
}
}
答案 1 :(得分:0)
这是基本的Javascript。
尝试这样的事情:
function grabPoints() {
var catchmentCoords = [];
for(var i=0; i<boundArray.length; i++){
catchmentCoords.push(new google.maps.LatLng(parseFloat(boundArray[i])));
}
var catchmentArea = new google.maps.Polygon({
paths: catchmentCoords
});
}