获取用户地理位置定位

来源:互联网 发布:icmp返回报文端口号 编辑:程序博客网 时间:2024/05/16 10:38

       在项目的逻辑业务当中,有时候需要获取用户当前所在的地理位置。那么,我们怎么去获取用户的地理位置定位呢?

       可以采用百度地图接口获取用户的地理位置定位。要使用该服务,你得先注册成为百度地图开发者。http://lbsyun.baidu.com/  百度地图开放平台地址

       注册成为开发者后,你会获取到百度地图给你的一个密匙key,这个密匙key就是你以后获取用户地理位置的一个凭证。

      且使用该地图接口的时候要注意以下几点:

       每一个开发者帐号每天使用普通IP定位服务和经纬度定位服务的使用次数是有限的,即配额有限。

       每一个开发者帐号在每分钟内使用普通IP定位服务的次数是有限的,即并发量有限。

       同一个帐号下的HTTP/HTTPS请求,配额、并发共享。


       首先,我先讲解通过经纬度获取用户的地理位置信息。

       1、获取地理位置定位(微信)  wx.getLocation  接口

       如果你熟悉微信开发,那么在微信开发当中,有一个接口权限叫   获取地理位置定位    该权限是包含在js接口中的,也就是说你要使用该服务你就得先注册微信网页的js接口服务。然后才能调用该权限(不熟悉的朋友可以先看看微信开发手册)。

       通过该js接口  你可以拿到用户当前所在的地理位置信息(该接口调用了收集GPS地理位置定位接口,如果手机没有开启GPS,那么微信会提示该用户是否开启GPS地理位置定位的)的经、纬度(如   29.586331,106.311926)拿到经纬度后,再将获得的经、纬度  传入百度接口获得当前的地理位置信息

      如php源码

@param

$x $y 经纬度

$ak 百度地图key   通过注册成为开放者得到

 function getAddress($x,$y,$ak)
{
    //调用百度地图接口
    $apiUrl = "http://api.map.baidu.com/geocoder/v2/?location={$x},{$y}&output=json&ak={$ak}";   //百度地图接口地址
    
    $jsonData = curlHttp($apiUrl);                                                                                                                   //curl 获取百度地理位置接口

    $data = json_decode($jsonData,true);                                                                                                    // 将返回的结果进行json处理

    return $result;
}


其中


/*curl*/
function curlHttp($url,$https = false,$post = false,$post_data = array())
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_HEADER,0);
    /*是否post提交数据*/
    if($post){
        curl_setopt($ch,CURLOPT_POST,1);
        if(!empty($post_data)){
            curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
        }
    }
    /*是否需要安全证书*/
    if($https){
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    // https请求 不验证证书和hosts
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    }
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}


明白了吧。先获取用户的经纬度,再获取用户具体的地理位置信息。  且获取到的地理位置精度很高。


2、通过普通IP定位地理位置

普通IP定位效果一般,只能针对IP返回大致位置信息,适用于对位置精度要求不高的应用。

@param

$ip  用户的ip地址

$ak  百度地图key

function getAddress($ip,$ak)
{
    //调用百度地图接口
    $apiUrl = "$api = "http://api.map.baidu.com/location/{$ip}?ak={$ak}&coor=bd09ll"";   //百度地图接口地址
    
    $jsonData = curlHttp($apiUrl);                                                                                                                   //curl 获取百度地理位置接口

    $data = json_decode($jsonData,true);                                                                                                    // 将返回的结果进行json处理

    return $result;
}


觉得满意请打赏,您的十分满意是笔者前进的动力



0 0
原创粉丝点击