你可以试试 Open Street Map Nominatim Webservice,它会为你执行地理编码和反向地理编码,不过我会查看使用条款:
以下是 Node.js 中的示例(必须安装 request 和 request-promise-native):
const rp = require('request-promise-native');
async function testReverseGeocode(latitude, longitude) {
const options = {
url: "https://nominatim.openstreetmap.org/reverse",
qs: {
lat: latitude,
lon: longitude,
format: 'json'
},
json: true,
headers: {
'User-Agent': "Node.js",
'Accept-Language': 'en-GB,en;q=0.7,en-US;q=0.3'
},
};
let result = await rp(options);
console.log("Result: ", result);
}
testReverseGeocode(31.2304, 121.4737);
如果您愿意使用付费服务,Google Geocoding API 非常好,如果您不执行大量请求,也不会很贵:
const rp = require('request-promise-native');
async function testReverseGeocodeGoogle(latitude, longitude) {
const options = {
url: `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitude},${longitude}`,
qs: {
key: API_KEY
},
json: true
};
let result = await rp(options);
console.log("Result: ", result);
}
testReverseGeocodeGoogle(31.2304, 121.4737);