我正在使用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]
提供值,则效果很好,控制台日志中没有错误。
答案 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 source,createOverlay
关于第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包装。