时间:2021-05-26
根据IP获取访客所在国家/城市/经纬度
安装GeoIP扩展:
注意:Beta版要指定版本号.如果是apt安装的PHP,直接安装php5-geoip这个包即可.
php.ini中加入:
免费下载GeoLiteCity数据库(解压后18MB):
http://dev.maxmind.com/geoip/legacy/install/city/
测试:
在命令行用geoiplookup查看IP信息:
可见IP地址
61.145.122.155sudo apt-get install geoip-bin geoip-databasegeoiplookup 61.145.122.155 -f /usr/share/GeoIP/GeoIP.datGeoIP Country Edition: CN, Chinageoip-database提供的GeoIP.dat只能精确到国家.
geoiplookup 61.145.122.155 -f /usr/share/GeoIP/GeoIPCity.datGeoIP City Edition, Rev 1: CN, 30, Guangdong, Guangzhou, N/A, 23.116699, 113.250000, 0, 0从maxmind官网下的数据库GeoLiteCity则信息更详细.
geoiplookup 61.145.122.155 则同时显示上述两个数据库的信息.
根据IP确定经纬度与计算距离
可以用
geoip_record_by_name($_SERVER['REMOTE_ADDR'])根据用户IP确定经纬度.
注意:
返回的西经和南纬是负数.
5000米转成经纬度:
纬度 Latitude: 1 deg = 110852 m
经度 Longitude: 1 deg = 111320*cos(lat) m
同一经线上,相差一纬度约为 110852 米
同一纬线上,相差一经度约为 111320*cos(lat) 米 (lat为该纬线的纬度)
数据库用户表中设两个字段,分别存储用户的经度lat和纬度lon.
这个范围是一个粗略的范围,下面计算距离后把超过5公里的用户去掉即可.
根据上面查询出来的用户的经纬度,
用半正矢公式(Haversine)根据经纬度计算两点间距离:
然后就可以用uasort或array_multisort由近到远列出用户了,比如有名为win,osx,lin这3个用户:
<?php$arr = array( 'win' => array( 'dis' => 1024, 'age' => 31 ), 'osx' => array( 'dis' => 512, 'age' => 15 ), 'lin' => array( 'dis' => 512, 'age' => 25 ));foreach($arr as $k => $v) { $sort['dis'][$k] = $v['dis']; $sort['age'][$k] = $v['age'];}//先按距离升序排序,如果距离相同,则按年龄降序排序array_multisort($sort['dis'], SORT_ASC, $sort['age'], SORT_DESC, $arr);echo json_encode($arr);//{"lin":{"dis":512,"age":25},"osx":{"dis":512,"age":15},"win":{"dis":1024,"age":31}}声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
根据现有IP地址获取其地理位置(省份,城市等)的方法functionGetIpLookup($ip=''){if(empty($ip)){return'请输入I
1.HTML5获取当前地理位置HTML5GeolocationAPI(地理位置应用程序接口)可以获取当前地理位置,手机端使用GPS,电脑则根据网络定位检查浏览器
一:实现定位及到指定位置导航所需组件及API1:组件:map(地图组件)2:API:wx.getLocation(Objectobject)(获取当前的地理位置
陌陌改变地理位置的方法是: 1、首先下载并安装定位模拟器,然后激活它。 2、登录定位模拟器之后,打开“位置参数”面板,接着人工填写一个虚拟的地理位置,也可通
使方法一、用IP138数据库查询域名或IP地址对应的地理位置。#-*-coding:gbk-*-importurllib2importretry:whileTr