NodeJS通过Lat / Lon找到国家

时间:2014-06-20 19:29:22

标签: javascript node.js geolocation geospatial

我有一个nodejs服务器和多个数据库,每个国家一个。
我希望能够通过用户作为参数发送的坐标(lat / Lon)选择正确的国家/地区。 (例如myserver / query / lat / lon)
我无法找到这样做的nodejs软件包。
我确实找到了根据IP地址按国家/地区进行过滤的人。但这不是这种情况。

感谢。

2 个答案:

答案 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';
}