动态加载多边形

时间:2015-10-05 10:36:25

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

我正在使用goMap Library并且拥有一个带有国家坐标的本地数据库,如果我将坐标直接放入代码但是使用click事件我会在下面调用方法来动态更新地图,那么效果很好:

    $.getJSON('countries/name', function(data) {
    $.each(data.cords, function (i, v) {
    var cor = '';
        for (i = 0; i < v.length; ++i) {
            cor += "{longitude: "+v[i].longitude+",latitude: "+v[i].latitude+"},";
        }   
    console.log(cor);
            $.goMap.createPolygon({
                color: "#00CC00",
                fillColor: '#00CC00',
                fillOpacity:    0.2,
                weight:     2,
                coords: [cor]
            });
    });
    });

我想用经度和纬度填充coords: [cor]所选国家/地区和更新地图,如果我手动为coords: [cor]提供值,则效果很好,控制台日志中没有错误。

1 个答案:

答案 0 :(得分:2)

Coords 必须{ latitude, longitude }的数组,而不是连接的字符串:

var cor = [];
for (i = 0; i < v.length; ++i) {
   cor.push({
     longitude: v[i].longitude,
     latitude: v[i].latitude
   })
} 

coords: cor //not coords : [cor]

事实上,在我看来 - 但不能100%肯定,也不能确切地知道它是什么 - 您可以立即使用data.cords。如果您检查gomap sourcecreateOverlay关于第463行:

,就会很清楚
case 'polygon':
    if (poly.coords.length > 0) {
        for (var j = 0, l = poly.coords.length; j < l; j++)
            overlay.push(new google.maps.LatLng(poly.coords[j].latitude, poly.coords[j].longitude));

        overlay = new google.maps.Polygon({
            map: this.map,
            path: overlay,
            strokeColor: poly.color ? poly.color : this.opts.polygon.color,
            strokeOpacity: poly.opacity ? poly.opacity : this.opts.polygon.opacity,
            strokeWeight: poly.weight ? poly.weight : this.opts.polygon.weight,
            fillColor: poly.fillColor ? poly.fillColor : this.opts.polygon.fillColor,
            fillOpacity: poly.fillOpacity ? poly.fillOpacity : this.opts.polygon.fillOpacity
        });
    }
        else
            return false;
    break;

为什么首先使用gomap?似乎没有添加任何东西或使任何更容易,只是另一个谷歌地图v3包装。