我正在开展网络分析,我们在服务器端使用node.js
,我们使用http请求(express framework)
发送数据。
Requirement
:必须找到访客的经纬度。
我的问题是如何找到node.js
中的纬度和经度?有没有可用的框架?
答案 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'
}
*/
});
它为您提供了这种信息格式