我有一个nodejs服务器和多个数据库,每个国家一个。
我希望能够通过用户作为参数发送的坐标(lat / Lon)选择正确的国家/地区。 (例如myserver / query / lat / lon)
我无法找到这样做的nodejs软件包。
我确实找到了根据IP地址按国家/地区进行过滤的人。但这不是这种情况。
感谢。
答案 0 :(得分:3)
以下是一个包:https://github.com/vkurchatkin/which-country
API非常简单:
var wc = require('which-country');
console.log(wc([-100, 40])); // prints "USA"
它在引擎盖下使用R-tree,所以它比线性扫描快得多(O(log n),我猜)。
答案 1 :(得分:1)
这是我做的:
我下载了geofabrik为每个国家提供的kml文件(例如download.geofabrik.de/africa/cameroon.kml)。
最后,我将文件加载到nodejs中并使用了一个名为" point-in-polygon" (https://www.npmjs.org/package/point-in-polygon)。
代码:
var inside = require('point-in-polygon')
var fs = require('fs');
var file = __dirname + '/coutries.json';
var countries_json = JSON.parse(fs.readFileSync(file, 'utf8'));
var get_country = function(lat, lon){
var c_list = countries_json['countries'];
for(var num in c_list){
var country = c_list[num];
if (inside([lat, lon],country['coordinates'])){
return country['name'];
}
}
return 'not_found';
}