如何标记搜索变得可拖动并在传单中给出经度和纬度
How to marker search become draggable and give the Longitude & latitude in leaflet
我希望我的传单地图能够拖动标记并获取经度和纬度。搜索结果中显示的标记。这是我的 js 代码,但我卡住了 T^T 请帮助我。谢谢
这里是我的 HTML 地址和经纬度
<form>
<p>
<label for="address">Address</label>
<input id="address">
</p>
<p>
<label for="latitude">Lintang</label>
<input id="latitude" placeholder="-6.922045042885848">
</p>
<p>
<label for="longitude">Bujur</label>
<input id="longitude" placeholder="107.61605564716159">
</p>
</form>
<div class="frame-lokasi">
<div id="map"></div>
</div>
这是我的 js
var map = L.map('map', {
center: [-6.922045042885848, 107.61605564716159],
zoom: 18
});
L.control.scale().addTo(map);
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
var searchControl = new L.esri.Controls.Geosearch().addTo(map);
var results = new L.LayerGroup('resuls', {draggable: true}).addTo(map);
var marker = L.marker([-6.922045042885848, 107.61605564716159], {
draggable: true
}).addTo(map);
marker.on('dragend', function (e) {
document.getElementById('latitude').value = marker.getLatLng().lat;
document.getElementById('longitude').value = marker.getLatLng().lng;
});
searchControl.on('results', function(e){
results.clearLayers();
for (var i = e.results.length - 1; i >= 0; i--) {
results.addLayer(L.marker(e.results[i].latlng));
}
});
setTimeout(function(){$('.pointer').fadeOut('slow');},3400);
更新这一行:results.addLayer(L.marker(data.results[i].latlng));
searchControl.on('results', function(e) {
results.clearLayers();
for (var i = e.results.length - 1; i >= 0; i--) {
var searchMarker = L.marker(data.results[i].latlng, {
draggable: true
});
document.getElementById('latitude').value = searchMarker.getLatLng().lat;
document.getElementById('longitude').value = searchMarker.getLatLng().lng;
searchMarker.on('dragend', function(e) {
console.log(e);
var _marker = e.target;
console.log(_marker.getLatLng())
document.getElementById('latitude').value = _marker.getLatLng().lat;
document.getElementById('longitude').value = _marker.getLatLng().lng;
})
results.addLayer(searchMarker);
}
});
data.results
是错字吗? L.marker(data.results[i].latlng, {
数据未定义可能 e.results
我希望我的传单地图能够拖动标记并获取经度和纬度。搜索结果中显示的标记。这是我的 js 代码,但我卡住了 T^T 请帮助我。谢谢
这里是我的 HTML 地址和经纬度
<form>
<p>
<label for="address">Address</label>
<input id="address">
</p>
<p>
<label for="latitude">Lintang</label>
<input id="latitude" placeholder="-6.922045042885848">
</p>
<p>
<label for="longitude">Bujur</label>
<input id="longitude" placeholder="107.61605564716159">
</p>
</form>
<div class="frame-lokasi">
<div id="map"></div>
</div>
这是我的 js
var map = L.map('map', {
center: [-6.922045042885848, 107.61605564716159],
zoom: 18
});
L.control.scale().addTo(map);
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
var searchControl = new L.esri.Controls.Geosearch().addTo(map);
var results = new L.LayerGroup('resuls', {draggable: true}).addTo(map);
var marker = L.marker([-6.922045042885848, 107.61605564716159], {
draggable: true
}).addTo(map);
marker.on('dragend', function (e) {
document.getElementById('latitude').value = marker.getLatLng().lat;
document.getElementById('longitude').value = marker.getLatLng().lng;
});
searchControl.on('results', function(e){
results.clearLayers();
for (var i = e.results.length - 1; i >= 0; i--) {
results.addLayer(L.marker(e.results[i].latlng));
}
});
setTimeout(function(){$('.pointer').fadeOut('slow');},3400);
更新这一行:results.addLayer(L.marker(data.results[i].latlng));
searchControl.on('results', function(e) {
results.clearLayers();
for (var i = e.results.length - 1; i >= 0; i--) {
var searchMarker = L.marker(data.results[i].latlng, {
draggable: true
});
document.getElementById('latitude').value = searchMarker.getLatLng().lat;
document.getElementById('longitude').value = searchMarker.getLatLng().lng;
searchMarker.on('dragend', function(e) {
console.log(e);
var _marker = e.target;
console.log(_marker.getLatLng())
document.getElementById('latitude').value = _marker.getLatLng().lat;
document.getElementById('longitude').value = _marker.getLatLng().lng;
})
results.addLayer(searchMarker);
}
});
data.results
是错字吗? L.marker(data.results[i].latlng, {
数据未定义可能 e.results