6

我正在研究网络分析,我们node.js在服务器端使用,我们使用 http request 发送数据(express framework)

Requirement:必须找到访问者的纬度和经度。

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

4

3 回答 3

10

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

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

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

于 2013-05-02T11:14:11.807 回答
0

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

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

如果您不能,不想或不想费心获取信息客户端,那么您可以尝试匹配 IP(这是 Maxmind 所做的,尽管我不确定他们是否会给你的经度和纬度或只是一个城市名称)。
然而,这些并不准确,尤其是当您的访问者使用具有地理定位功能的设备(例如手机)时。

于 2013-05-02T12:15:17.600 回答
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'
        }

    */

});

它给你这种格式的信息

于 2019-02-01T07:19:47.670 回答