2013-07-10 3 views
0

Я использую значение ans значение для рисования многоугольника. но он не нарисовал ни одного полигона. если я положил значение ans, то его работа.javascript :: как использовать переменную javascript в массиве для рисования многоугольника на листе

мой вопрос, как я могу использовать 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]); 
+0

Я вижу, что вы не создаете свой массив точек правильно. Я не могу четко видеть, откуда эти точки. Какова ценность 'g_cord' в начале фрагмента? –

+0

вы инициализируете ans как строку, меняете его на значение float – Amol

+0

Я добавил значение g_cord. –

ответ

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

Это разделяет каждую пару lat-long на запятую и анализирует каждую поплавок. Кажется, это структура данных, требуемая конструктором Polygon от Leafly.

+0

большое спасибо! его рабочий ... –

+1

+1 Это то, что нужно полигону (массив массивов). Другой возможностью может быть: var ans = JSON.parse ("[" + g_cord.split (":"). Map (function (v) {return "[" + v + "]";}) + "]"); ', но ваш очень хороший и ясный. – acdcjunior

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); 
+0

Или просто 'ans [k] = a [k];'. – user268396

+0

дает значение a = 28.40106, 77.31231, 28.40129, 77.31231, 28.40129, 77.31269, 28.40106, 77.31269 ..... но оно требуется как [28.40106, 77.31269], [28.40129, 77.31269], [28.40129, 77.31231], [ 28.40106, 77.31231] –

+0

@komal в этом случае см. Ответ от Kent –