Javascript 单张反向地理编码
我想要的是使用传单地图+功能,在这里我可以通过Lat/Lng并接收带有地址的文本消息 我试图使用esri插件,但我做错了什么。 目前,我很想得到函数内部的地址,但我不知道如何正确地将其传递给变量 这是我的密码:Javascript 单张反向地理编码,javascript,leaflet,geocoding,reverse-geocoding,esri-leaflet,Javascript,Leaflet,Geocoding,Reverse Geocoding,Esri Leaflet,我想要的是使用传单地图+功能,在这里我可以通过Lat/Lng并接收带有地址的文本消息 我试图使用esri插件,但我做错了什么。 目前,我很想得到函数内部的地址,但我不知道如何正确地将其传递给变量 这是我的密码: var map = L.map('map').setView([40.725, -73.985], 7); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '&
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);
这是因为
消息
将被运行
函数的HTTP响应填充
因为执行run
函数需要一些时间,所以警报(消息)
将在run函数完成之前执行
以下是可以解决您问题的方法:
编辑:
好的,那么你要找的是承诺
。
您的代码需要等待插件获取地址。
不幸的是,我不知道如何使用vanilla JS实现这一点,所以我导入了jQuery(使用方法$。当和时,然后和对象$。延迟)
这是新的
如果您在vanilla JS中需要它,我可以查看vanilla JS中的承诺。之所以会出现这种情况,是因为消息将被run
函数的HTTP响应填满
因为执行run
函数需要一些时间,所以警报(消息)
将在run函数完成之前执行
以下是可以解决您问题的方法:
编辑:
好的,那么你要找的是承诺
。
您的代码需要等待插件获取地址。
不幸的是,我不知道如何使用vanilla JS实现这一点,所以我导入了jQuery(使用方法$。当和时,然后和对象$。延迟)
这是新的
如果您在vanilla JS中需要此功能,我可以查看vanilla JS中的承诺。您可以通过以下方式更改此功能:
var geocodeService=L.esri.geocodeing.geocodeService()
您可以通过以下方式更改功能:
var geocodeService=L.esri.geocodeing.geocodeService()
谢谢你,这部分有帮助。但是如何使用这个geocodins作为一个函数,比如:var address=convertToAddress([40.725,-73.985]);函数convertToAddress(]lat,lon]){//here return address after geocoding}注释破坏了代码,因此请查看修改后的问题Hello,不幸的是没有。我仍然无法获取变量中的解码地址。请您看一下这个提琴:Lin 16每次您想要解码地址并使用变量时,您必须执行以下操作:var result=convertToAddress([lat,lon]);$。当(result).done(function(r){result=r;//在此处编写使用地址的其余代码})与您联系时,这部分会有所帮助。但是如何使用这个geocodins作为一个函数,比如:var address=convertToAddress([40.725,-73.985]);函数convertToAddress(]lat,lon]){//here return address after geocoding}注释破坏了代码,因此请查看修改后的问题Hello,不幸的是没有。我仍然无法获取变量中的解码地址。请您看一下这个提琴:Lin 16每次您想要解码地址并使用变量时,您必须执行以下操作:var result=convertToAddress([lat,lon]);$。when(result).done(function(r){result=r;//在此处编写使用地址的其余代码})简单提示:只需将代码格式添加到这行代码var geocodeService=L.esri.geocode.geocodeService();;感谢简单提示:只需将代码格式添加到这行代码var geocodeService=L.esri.geocodeing.geocodeService();;谢谢
var address = convertToAddress([40.725, -73.985]);
function convertToAddress(]lat,lon])
{
// here return address after geocoding
}
geocodeService.reverse().latlng([36.2933693, 7.9388789]).run(function (error, result) {
if (error) {
return;
}
L.marker(result.latlng).addTo(map).bindPopup(result.address.Match_addr).openPopup();
});