如何使用 Open Street Maps API 从坐标中获取地址?
How to get the address from coordinates with Open Street Maps API?
我在 Cordova 中开发了一个开源应用程序(它使用 Javascript)并且我正在使用 Google 地图 API,尽管随着应用程序越来越流行,我的账单正在增加(对于免费、无广告的应用程序来说不是很好)。因此,我想转到 Open Street Maps。
我一直在阅读要使用的 docs about the Overpass API but I see no simple clear examples of code implementation. I know the sever,我应该使用 HTTP GET 请求并使用其特殊的 XML 语法。但不清楚如何将 XML 传递给 GET 请求。此外,关于坐标的例子提供了一个边界框作为输入,而不是一个点(或者一个点被认为是一个角相同的正方形?)。
<union>
<bbox-query s="51.249" w="7.148" n="51.251" e="7.152"/>
<recurse type="up"/>
</union>
<print mode="meta"/>
能否请您在 Javascript 中提供一个简单示例(例如 $.ajax
),说明如何通过向 [=21= 提供地理坐标来获取特定位置的地址? ]?
几个小时后,我与您分享了可行的解决方案。显然,我们应该使用 Nominatim service from Open Street Maps, and therein the reverse geocoding service. Please read the usage policy 来避免滥用,因为这是一项完全免费的服务。
$.ajax({
url: "https://nominatim.openstreetmap.org/reverse",
data: {
lat: 38.748666,
lon: -9.103002,
format: "json"
},
beforeSend: function (xhr) {
xhr.setRequestHeader(
'User-Agent',
'ID of your APP/service/website/etc. v0.1'
)
},
dataType: "json",
type: "GET",
async: true,
crossDomain: true
}).done(function (res) {
console.log(res.address)
}).fail(function (error) {
console.error(error)
})
我在 Cordova 中开发了一个开源应用程序(它使用 Javascript)并且我正在使用 Google 地图 API,尽管随着应用程序越来越流行,我的账单正在增加(对于免费、无广告的应用程序来说不是很好)。因此,我想转到 Open Street Maps。
我一直在阅读要使用的 docs about the Overpass API but I see no simple clear examples of code implementation. I know the sever,我应该使用 HTTP GET 请求并使用其特殊的 XML 语法。但不清楚如何将 XML 传递给 GET 请求。此外,关于坐标的例子提供了一个边界框作为输入,而不是一个点(或者一个点被认为是一个角相同的正方形?)。
<union>
<bbox-query s="51.249" w="7.148" n="51.251" e="7.152"/>
<recurse type="up"/>
</union>
<print mode="meta"/>
能否请您在 Javascript 中提供一个简单示例(例如 $.ajax
),说明如何通过向 [=21= 提供地理坐标来获取特定位置的地址? ]?
几个小时后,我与您分享了可行的解决方案。显然,我们应该使用 Nominatim service from Open Street Maps, and therein the reverse geocoding service. Please read the usage policy 来避免滥用,因为这是一项完全免费的服务。
$.ajax({
url: "https://nominatim.openstreetmap.org/reverse",
data: {
lat: 38.748666,
lon: -9.103002,
format: "json"
},
beforeSend: function (xhr) {
xhr.setRequestHeader(
'User-Agent',
'ID of your APP/service/website/etc. v0.1'
)
},
dataType: "json",
type: "GET",
async: true,
crossDomain: true
}).done(function (res) {
console.log(res.address)
}).fail(function (error) {
console.error(error)
})