2014-09-18 2 views
0

Я работаю с API Google Maps v3, помещая на карту несколько полигонов. Я создаю объект polyOptions, который используется при создании многоугольника.Невозможно повторно использовать polyOptions для нового многоугольника

Это работает только один раз. Для всех других полигонов я должен создать другой идентичный объект polyOptions. Это хорошо, но немного повторяется, и эта веб-страница уже достаточно большой, не повторяя себя.

Я не понял природу этого объекта JS?

//Create array for polygons 

var polygons = []; 

//first polygon 

var myCoordinates = [new google.maps.LatLng(55.81362907119961, -2.054443359375) //long list of coordinates 
var polyOptions = { 
    path: myCoordinates, 
    strokeWeight: 1, 
    fillColor: "white", 
    fillOpacity: 0.6 
} 
var poly1= new google.maps.Polygon(polyOptions); 
poly1.setMap(map); 
polygons.push(poly1); 

//second polygon 

var myCoordinates = [new google.maps.LatLng(54.94607621987403, -3.16131591796875) // long list of coordinates 
var poly2 = new google.maps.Polygon(polyOptions); // doesn't work 
poly2.setMap(map); 
polygons.push(poly2); 
+0

Вы назначаете новое значение переменной 'myCoordinates'. Почему, по вашему мнению, это каким-либо образом повлияет на ценность свойства polyOptions.path? –

+0

Очевидно, если бы я понял, что тогда мне не нужно было задавать вопрос! – Cohagen

ответ

0

Вы должны обновить path свойство вашего polyOptions на каждом шагу. В настоящий момент ваш второй многоугольник нарисован на первом с теми же координатами.

// second polygon 

// your var myCoordinates is already defined above, now use it by its name 
myCoordinates = [new google.maps.LatLng(54.94607621987403, -3.16131591796875) // long list of coordinates 
polyOptions.path = myCoordinates; // here you set path to the new value 
var poly2 = new google.maps.Polygon(polyOptions); // should work 
poly2.setMap(map); 
polygons.push(poly2); 
+0

Действительно, это действительно сработало. Очевидная ошибка в ретроспективе! – Cohagen

Смежные вопросы