マーカー位置に基づいてフォーム上の2つの非表示フィールドの値を更新したいとします。私は私の答えを得るために、このlinkを読んで、これは私の最終的なコードであるマーカーのドラッグ先のリーフレットの更新位置
<script>
var map = L.map('map', {
center: [33.505, 53.9],
zoom: 5
});
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
map.on('dblclick', addMarker);
var Marker;
function addMarker(e) {
//remove previous markers
if (Marker) {
map.removeLayer(Marker);
UpdateLatLng(e);
}
// Add marker to map at click location; add popup window
Marker = new L.marker(e.latlng, {
draggable: true
}).addTo(map);
}
function UpdateLatLng(e) {
var latValue, lngValue;
latValue = e.latlng.lat;
lngValue = e.latlng.lng;
document.getElementById("map_lat").value = latValue;
document.getElementById("map_lng").value = lngValue;
//$("#map_lat").val() = latValue;
}
function UpdateLatLng2(e) {
var latValue, lngValue;
var position = marker.getLatLng();
latValue = position.lat;
lngValue = position.lng;
document.getElementById("map_lat").value = latValue;
document.getElementById("map_lng").value = lngValue;
//$("#map_lat").val() = latValue;
}
Marker.on('dragend', UpdateLatLng2);
</script>
結果は私のフォームフィールドは、最初のダブルクリックイベントに更新されていないが、彼らは次のダブルクリック以降に更新されますということです代わりにマーカーのdragendイベントを使用します。どうして?
getElementById
では、なぜ次のコードは機能しませんか?
$("#map_lat").val() = latValue;
助けてください。
ありがとうございます。最初のダブルクリック問題を修正するためのヒント。 しかし、marker dragendでは何も起こらず、フォームフィールドは更新されません。 – Javad
@Javad最新の回答を確認してください。あなたのケースにjQueryが組み込まれていない場合に備えて、 'Marker.on'を' Marker.addListener'に更新しました。 – choz
marker.onの新しいコードが動作しました。 addListenerでは動作しませんでした。 問題を修正しました。ありがとうございました – Javad