我正在从事网站分析工作,我们使用
node.js
在服务器端,使用http请求(express framework)
发送数据。
要求
: 必须找到访问者的纬度和经度。
我的问题是如何在node.js
中查找纬度和经度? 有可用的框架吗?
node.js
在服务器端,使用http请求(express framework)
发送数据。
要求
: 必须找到访问者的纬度和经度。
我的问题是如何在node.js
中查找纬度和经度? 有可用的框架吗?
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'
}
*/
});
它会给你这种格式的信息