Как сохранить e.latlng в массив: листовка

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

Я хочу провести линию между этими маркерами, т.е. используя L.polylines(), но, поскольку я новичок в javascript и листовке, я не могу понять, как передать эту точку latlng в массив, который позже будет использоваться в этих функциях. Для начальной работы я передал статические координаты (работает по требованию).

L.easyButton('fa-link', function () {

var secureThisArea = [[-81, 100.75], [-76.50, 245.75], [-145.50, 184.25], [-128, 311.75]];

    map.on('click', function fencePlace(e) {

    L.marker([-81, 100.75], { icon: fenceIcon, draggable: true }).bindPopup("this is first").addTo(map);
    L.marker([-76.50, 245.75], { icon: fenceIcon, draggable: true }).bindPopup("this is second").addTo(map);
    L.marker([-145.50, 184.25], { icon: fenceIcon, draggable: true }).bindPopup("this is third").addTo(map);
    L.marker([-128, 311.75], { icon: fenceIcon, draggable: true }).bindPopup("this is fourth").addTo(map);
    L.polyline(secureThisArea).addTo(map);

});
                }).addTo(map);

person Suhail Mumtaz Awan    schedule 14.09.2015    source источник
comment
Пожалуйста, прекратите использовать .... и ,,,, - это не настоящие формы знаков препинания, это шум без семантического значения.   -  person meagar    schedule 15.09.2015
comment
@meagar хорошо, сэр... я не буду   -  person Suhail Mumtaz Awan    schedule 15.09.2015


Ответы (2)


Добавить другое значение в массив легко, например:

secureThisArea.push([-81, 100.75]);

Более подробную информацию (а также обо всем, что связано с JavaScript) можно найти на странице Сеть разработчиков Mozilla.

Если вы хотите использовать координаты объектов-маркеров, вы можете получить их с помощью:

var myMarker = L.marker([-81, 100.75], { icon: fenceIcon, draggable: true }),
    latLng = null;

latLng = myMarker.getLatLng();

Также ознакомьтесь с документацией по листовкам.

person RhinoDevel    schedule 14.09.2015
comment
спасибо за ответ, +1 за помощь, и я обязательно приму ответ - person Suhail Mumtaz Awan; 14.09.2015

Если я вас правильно понял, вы хотите создавать маркеры по клику и соединять их ломаными линиями. Это легко сделать в коде с поясняющими комментариями:

// Create new empty polyline and add it to the map
var polyline = new L.Polyline([]).addTo(map);

// Handle map click event
map.on('click', function(event) {

    // New marker on coordinate, add it to the map
    new L.Marker(event.latlng).addTo(map);

    // Add coordinate to the polyline
    polyline.addLatLng(event.latlng);

});

Теперь, если вы хотите получить все координаты, добавленные к полилинии, вы можете использовать метод getLatLngs для L.Polyline, который возвращает массив из L.LatLng объектов.

Ссылка: http://leafletjs.com/reference.html#polyline

Пример: http://plnkr.co/edit/h7aMwc?p=preview

person iH8    schedule 14.09.2015
comment
спасибо за ответ, это идеальное решение для моего понимания, я хотел бы дать больше, чем голосование,,,, - person Suhail Mumtaz Awan; 14.09.2015
comment
Нет, спасибо, всегда пожалуйста. Если это лучший ответ на ваш вопрос, чем тот, который вы приняли, вы всегда можете вместо него принять другой. См.: stackoverflow.com/help/accepted-answer. - person iH8; 14.09.2015