美文网首页
通过IP来得到当前的位置信息(高德地图)

通过IP来得到当前的位置信息(高德地图)

作者: RocaLee | 来源:发表于2019-03-22 15:10 被阅读0次

    先从高德开发平台里添加应用,获取到WEB服务的key
    https://lbs.amap.com/api/webservice/guide/api/ipconfig/?sug_index=0
    可以按照上面的链接来操作


    下面写一个方法来获取当前的ip

    function getIP()
    {
        static $realip;
        if (isset($_SERVER)){
            if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
                $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
            } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
                $realip = $_SERVER["HTTP_CLIENT_IP"];
            } else {
                $realip = $_SERVER["REMOTE_ADDR"];
            }
        } else {
            if (getenv("HTTP_X_FORWARDED_FOR")){
                $realip = getenv("HTTP_X_FORWARDED_FOR");
            } else if (getenv("HTTP_CLIENT_IP")) {
                $realip = getenv("HTTP_CLIENT_IP");
            } else {
                $realip = getenv("REMOTE_ADDR");
            }
        }
        return $realip;
    }
    

    写好之后开始使用此方法

    $ip = getIp();
    //因为我的本机ip是27.187.*.*
    //如果是本地的ip为:127.0.0.1,为了方便使用我做了下面的判断
    if($ip == '127.0.0.1')
    $ip = '27.187.*.*';
    //我主要想得到adcode,根据个人情况来写返回值
    $adcode = $this->getLocation($ip);
    
    public function getLocation($ip){
            $key = Config::get('map.key');    //为自己申请的key值
            $url = "https://restapi.amap.com/v3/ip?ip=$ip&output=xml&key=$key";
            $data = xmltoarray(file_get_contents($url));   //返回值是xml的格式,进行了解析
            $adcode = 0;
            if($data['status'] == 1){
                if($data['city'] == false){
                    $adcode = 0;
                }else{
                    $adcode = $data['adcode'];
                }
            }
            return $adcode;
    }
    
    //解析xml格式
    //将xml格式转换为数组
    function xmltoarray($xml) { 
         //禁止引用外部xml实体 
        libxml_disable_entity_loader(true); 
        $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); 
        $val = json_decode(json_encode($xmlstring),true); 
        return $val;
    }
    

    相关文章

      网友评论

          本文标题:通过IP来得到当前的位置信息(高德地图)

          本文链接:https://www.haomeiwen.com/subject/wexrvqtx.html