如何在node.js中找到经度和纬度?

时间:2013-05-02 10:16:33

标签: node.js express latitude-longitude

我正在开展网络分析,我们在服务器端使用node.js,我们使用http请求(express framework)发送数据。

Requirement:必须找到访客的经纬度。

我的问题是如何找到node.js中的纬度和经度?有没有可用的框架?

3 个答案:

答案 0 :(得分:6)

我强烈建议在浏览器中使用HTML5地理位置API,然后将访问者位置信息发送到您的服务器 - 这比使用服务器端IP地址的地理位置更准确。您将获得ISP的位置,这可能相当遥远,而且IP到位数据库并不总是与最新的更改保持同步,因此您可能无法获得特定IP地址的任何数据。

要了解有关此主题的更多信息,请查看MaxMind,它提供了一个流行的IP到位数据库,在其数据库中发布了一些统计信息:GeoIP City Accuracy for Selected Countries

这是使用navigator.geolocation的一个很好的例子:

答案 1 :(得分:0)

如果访问者通过浏览器访问您的网站,那么您就会询问有关错误技术的问题。
Node.js是一种服务器端技术,这意味着它无法直接访问用户的地理位置。

您应该问的是如何在客户端使用javascript获取地理位置,然后只需通过Ajax将该信息发送到您的服务器。
这个问题很容易回答:http://www.w3schools.com/html/html5_geolocation.asp。有一些课程库可以方便地使用它。

如果你不能,或者不想打扰获取信息客户端,那么你可以尝试匹配IP(这是Maxmind所做的,尽管我和#39;我不确定他们是否会给你经度和latitide或只是一个城市名称。)
但是,这些并不准确,特别是如果您的访问者使用具有地理定位功能的设备(例如移动电话)。

答案 2 :(得分:0)

1)您还可以使用此npm软件包来了解您的ip长度

https://www.npmjs.com/package/geoip-lite

{ range: [ 3479298048, 3479300095 ],
  country: 'US',
  region: 'TX',
  eu: '0',
  timezone: 'America/Chicago',
  city: 'San Antonio',
  ll: [ 29.4969, -98.4032 ],
  metro: 641,
  area: 1000 }

它为您提供了这种信息格式


2)此软件包可为您提供一些有用的信息

https://www.npmjs.com/package/iplocation

iplocation('56.70.97.8', [], (error, res) => {

    /* res:

        {
            as: 'AS11286 KeyBank National Association',
            city: 'Cleveland',
            country: 'United States',
            countryCode: 'US',
            isp: 'KeyBank National Association',
            lat: 41.4875,
            lon: -81.6724,
            org: 'KeyBank National Association',
            query: '156.77.54.32',
            region: 'OH',
            regionName: 'Ohio',
            status: 'success',
            timezone: 'America/New_York',
            zip: '44115'
        }

    */

});

它为您提供了这种信息格式