Предположим, у нас есть проект, использующий leaflet.js. При нажатии на карту я хочу, чтобы появилось всплывающее окно, которое дает мне выпадающее меню с кнопкой отправки. Выпадающая функция имеет 3 варианта a, b, c. Я хочу иметь возможность создать кнопку отправки, которая создает маркер в месте (LatLong) всплывающего окна. этот маркер должен отображать строку выбора, сделанную в выпадающем меню.
Прежде всего, я попробовал вариант 1 в коде, однако я получаю ошибку ссылки всякий раз, когда я создаю обработчик. Я также попробовал вариант 2, где каждый создает объект div. Я также попытался создать объект div вручную с идентификатором «popupcontent», который сработал, однако обработчик не запоминает координаты lat-long.
В итоге:
Я хочу создать кнопку, которая делает маркер в месте, где щелкают содержимое a, b, c, в зависимости от выбора в раскрывающемся меню.
вариант 1
var dropdown =
`Type to submit:
<select>
<option value="a">a</option>
<option value="b">b</option>
<option value = "c">c</option>
</select>: <button onclick="buttonFunction()">submit</button>`
var popup = L.popup();
function onMapClick(e) {
popup
.setLatLng(e.latlng)
.setContent(dropdown)
.openOn(mymap);
//L.marker(e.latlng).addTo(mymap);
//L.marker([e.latlng.lat, e.latlng.long]).addTo(mymap)
}
option2
var popup = L.popup();
var container = L.DomUtil.create('div');
var btn = L.DomUtil.create('button', '', container);
btn.setAttribute('type', 'button');
btn.innerHTML = 'hello kees';
L.DomEvent.on(btn, 'click', () => {
alert("hello kees");
});
function onMapClick(e) {
popup
.setLatLng(e.latlng)
.setContent(container)
.openOn(mymap);
//L.marker(e.latlng).addTo(mymap);
//L.marker([e.latlng.lat, e.latlng.long]).addTo(mymap)
}
ЗАДАЧА:
function onMapClick(e) {
popup
.setLatLng(e.latlng)
.setContent( "LatLong: "+ e.latlng.lat + "," + e.latlng.lng)
.openOn(mymap);
lat = e.latlng.lat
long = e.latlng.lng
}
function buttonFunction() {
var selected = document.getElementById("popupContent");
var value = dropDown.options[dropDown.selectedIndex].text;
L.marker(lat,long).addTo(mymap);
}