我正在研究网络分析,我们node.js
在服务器端使用,我们使用 http request 发送数据(express framework)
。
Requirement
:必须找到访问者的纬度和经度。
我的问题是如何找到纬度和经度node.js
?有什么可用的框架吗?
我正在研究网络分析,我们node.js
在服务器端使用,我们使用 http request 发送数据(express framework)
。
Requirement
:必须找到访问者的纬度和经度。
我的问题是如何找到纬度和经度node.js
?有什么可用的框架吗?
我强烈建议在浏览器中使用 HTML5 地理定位 API,然后将访问者位置信息发送到您的服务器——这比在服务器端使用来自 IP 地址的地理定位更准确。您将获得 ISP 的位置,该位置可能很远,此外,IP 到位置数据库并不总是与最新更改保持同步,因此您可能无法获得任何数据特定的 IP 地址。
要了解有关此主题的更多信息,请查看 MaxMind,它提供了一个流行的 IP 到位置数据库,并在其数据库中发布了一些统计数据:GeoIP City Accuracy for Selected countries
这是一个很好的使用示例navigator.geolocation
:
如果访问者通过浏览器访问您的网站,那么您是在问错误的技术问题。
Node.js 是一种服务器端技术,这意味着它不能直接访问用户的地理位置。
您应该问的是如何在客户端使用 javascript 获取地理位置,然后简单地通过 Ajax 将该信息发送到您的服务器。
这个问题很容易回答:http ://www.w3schools.com/html/html5_geolocation.asp 。当然有一些库可以简化它的使用。
如果您不能,不想或不想费心获取信息客户端,那么您可以尝试匹配 IP(这是 Maxmind 所做的,尽管我不确定他们是否会给你的经度和纬度或只是一个城市名称)。
然而,这些并不准确,尤其是当您的访问者使用具有地理定位功能的设备(例如手机)时。
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'
}
*/
});
它给你这种格式的信息