Я хочу использовать функцию Leaflet maps +, где я могу передать Lat / Lng и получить текстовое сообщение с адресом.
Я пытаюсь использовать esri plugin, но я делаю что-то не так.
В настоящий момент я не могу получить адрес внутри функции, но я не знаю, как правильно передать его в переменную.
Вот мой код:
var map = L.map('map').setView([40.725, -73.985], 7);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
var geocodeService = L.esri.Geocoding.geocodeService();
map.on('click', function(e) {
geocodeService.reverse().latlng(e.latlng).run(function(error, result) {
L.marker(result.latlng).addTo(map).bindPopup(result.address.Match_addr).openPopup();
});
});
var message;
message = geocodeService.reverse().latlng([40.725, -73.985]).run(function(error, result) {
//alert(result.address.Match_addr); //this alert works here ok and can retur addrress
return result.address.Match_addr;
});
//this alert won't work, why I can get the address here outside the function
alert(message);
и вот полный пример:
https://jsfiddle.net/5aq6z1vL/
Как использовать геокодер в качестве функции, подобной:
var address = convertToAddress([40.725, -73.985]);
function convertToAddress(]lat,lon])
{
// here return address after geocoding
}