0

我正在使用ans值来绘制多边形。但它不绘制任何多边形。如果我直接投入ans价值,那么它的工作。

我的问题是如何ans在 L.polygon 方法中使用值

var a = g_cord.split(":"); //g_cord= 28.40106, 77.31231: 28.40129, 77.31231: 28.40129, 77.31269: 28.40106, 77.31269 
var ans="";
for(var k=0;k<a.length;k++){
    ans="["+a[k]+"]," +ans;    
}               
alert(ans); //[ 28.40106, 77.31269 ],[ 28.40129, 77.31269],[ 28.40129, 77.31231],[ 28.40106, 77.31231],         
window['polygon'+id] = new L.polygon([ans],{color:"#738DEA",weight:4});
window['polygon'+id].bindPopup(""+g_name);
map.fitBounds(window['polygon'+id].getBounds());
document.getElementById("_"+id).checked = true;
group.addLayer(window['polygon'+id]);
4

2 回答 2

1

在这种情况下ans不是一个数组,它是一个字符串

你需要

var ans= [];
for(var k=0;k<a.length;k++){
    ans.push(a[k]); // if a[k] also is a string then you may have to convert it into an array by splitting it like a[k].split(',')
}               
alert(ans);
于 2013-07-10T04:38:14.173 回答
1

假设 g_cord 包含类似 "28.40106, 77.31269:28.40129, 77.31269" 等,那么我认为你需要做这样的事情:

var a = g_cord.split(":");
var ans = [];
for(var k=0;k<a.length;k++){
    var latLong = a[k].split(",");
    ans.push([ parseFloat(latLong[0]), parseFloat(latLong[1]) ]);        
}

这将逗号上的每个经纬度对分开,并将每个解析为浮点数。这似乎是 Leafly 的 Polygon 构造函数所需的数据结构。

于 2013-07-10T04:44:23.467 回答