Leaflet 单张点击地图并检索地址
我正在制作一张基于地图的传单。根据您在地图上单击的位置,您将获得真实地址(街道、城市、地区)或商业名称:在链接的示例中,缩放地图,然后单击任何餐厅,您将获得“皇家孟加拉印度餐厅”,而不是地址。。。 为了避免这种情况,我尝试首先检测地址是否为真实地址:Leaflet 单张点击地图并检索地址,leaflet,reverse-geocoding,Leaflet,Reverse Geocoding,我正在制作一张基于地图的传单。根据您在地图上单击的位置,您将获得真实地址(街道、城市、地区)或商业名称:在链接的示例中,缩放地图,然后单击任何餐厅,您将获得“皇家孟加拉印度餐厅”,而不是地址。。。 为了避免这种情况,我尝试首先检测地址是否为真实地址: map.on('click', function (e) { geocodeService.reverse().latlng(e.latlng).run(function (error, result) { if (err
map.on('click', function (e) {
geocodeService.reverse().latlng(e.latlng).run(function (error, result) {
if (error) { return; }
let address = result.address.Match_addr;
lat = parseFloat(e.latlng.lat);
lon = parseFloat(e.latlng.lng);
getAddress(address,lat,lon);
});
});
function getAddress(addr,lat,lon) {
let ad = addr.split(',');
if(typeof ad[1] == "string") { // OK -> real address
alert(ad[0]+', '+ad[2]+' '+ad[1]+'');
// street city zip code ----> works perfectly
}
else if(typeof ad[1] == "undefined") { // commercial name
// ...now what I'm tying to achieve: fire pseudo-click with new coords on map
morelat = lat+0.00005;
morelon = lon+0.00005;
map.fire('click',[morelat,morelon]) // <--- doesn't work but looking for something like
}
}
有什么好办法吗?好的,看起来很简单: result.address.LongLabel是完整地址,包括第一位的商业名称(如果提供) result.address.Match_addr是商业名称(如果提供),否则是真实地址(如果没有提供) LongLabel.length(在我的测试中)是6(真实地址)或7(带有商业地址)
好的:真正的地址是longLabel JSON…它似乎对法国是可用的。将针对其他国家/地区/地址系统进行测试。
else if(typeof ad[1] == "undefined") { // commercial name
morelat = lat+0.00005;
morelon = lon+0.00005;
geocodeService.reverse().latlng([morelat,morelon]).run(function (error, result) {
if (error) { return; }
getAddress(addr,morelat,morelon)
});
}
map.on('click', function (e) {
geocodeService.reverse().latlng(e.latlng).run(function (error, result) {
if (error) { return; }
let elems = result.address.LongLabel.split(',')
if(elems.length==6) {
address = result.address.LongLabel;
}
if(elems.length==7) {
// remove commercial name
address = result.address.LongLabel.replace(result.address.Match_addr+',','');
}
let ad = address.split(',');
alert(ad[0]+', '+ad[2]+' '+ad[1]+'');
});
});