无论您是通过地址解析器搜索位置还是在地图中拖动或单击,它都应始终是同一标记。该怎么办?
我试图将地址解析器集成到脚本中,但这只是添加了一个新的附加标记,并且不输出latlon。缺乏通过拖动和点击与标记的交互作用
<script>
var map;
var ajaxRequest;
var plotlist;
var plotlayers=[];
function initmap() {
// set up the map
map = new L.Map('map');
// create the tile layer with correct attribution
var osmUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
var osmAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
var osm = new L.TileLayer(osmUrl, {minZoom: 6, maxZoom: 14, attribution: osmAttrib});
//remember last position
var rememberLat = 51.3;
var rememberLong = 0.75;
if( !rememberLat || !rememberLong ) { rememberLat = 51.3; rememberLong = 0.75;}
// start the map in South-East England
map.setView(new L.LatLng(rememberLat, rememberLong),9);
map.addLayer(osm);
var searchbox = map.addControl( new L.Control.Search({
url: 'https://nominatim.openstreetmap.org/search?format=json&q={s}',
jsonpParam: 'json_callback',
propertyName: 'display_name',
propertyLoc: ['lat','lon'],
marker: L.circleMarker([0,0],{radius:30}),
autoCollapse: true,
autoType: false,
minLength: 2
}) );
var marker = L.marker([rememberLat, rememberLong],{
draggable: true
}).addTo(map);
marker.on('dragend', function (e) {
updateLatLng(marker.getLatLng().lat, marker.getLatLng().lng);
});
map.on('click', function (e) {
marker.setLatLng(e.latlng);
updateLatLng(marker.getLatLng().lat, marker.getLatLng().lng);
});
function updateLatLng(lat,lng,reverse) {
if(reverse) {
marker.setLatLng([lat,lng]);
map.panTo([lat,lng]);
} else {
document.getElementById('latitude').value = marker.getLatLng().lat;
document.getElementById('longitude').value = marker.getLatLng().lng;
map.panTo([lat,lng]);
}
}
}
</script>
<body>
<label for="latitude">Latitude:</label>
<input id="latitude" type="text" />
<label for="longitude">Longitude:</label>
<input id="longitude" type="text" />
</body>
我没有错误消息,但是我想拖动或单击或搜索(通过地址解析器搜索框)并输出坐标(纬度)。更好的办法是获得额外的海运高度和地址以进行输出。如果那行得通,那就太好了。感谢您的帮助(如果可能)。