Google Maps API V3 - 构建集水区变量

时间:2013-12-27 16:49:48

标签: javascript php google-maps google-maps-api-3

我正在尝试制作一个程序,根据存储在数据库中的给定点在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是否在多边形内部,那么我们将不胜感激。

2 个答案:

答案 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])));
    }
}

working example

答案 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
    });
}