地理编码器的标记(位置搜索)与拖动和单击的标记之间的交互存在问题。它应该总是相同的标记

时间:2019-07-13 10:39:52

标签: leaflet openstreetmap

无论您是通过地址解析器搜索位置还是在地图中拖动或单击,它都应始终是同一标记。该怎么办?

我试图将地址解析器集成到脚本中,但这只是添加了一个新的附加标记,并且不输出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>

我没有错误消息,但是我想拖动或单击或搜索(通过地址解析器搜索框)并输出坐标(纬度)。更好的办法是获得额外的海运高度和地址以进行输出。如果那行得通,那就太好了。感谢您的帮助(如果可能)。

0 个答案:

没有答案