php根据IP获取经纬度信息--百度地图篇

1、前言php

以前一篇写过 php根据IP获取IP所在城市  ,可是还想再精确一点,获取这个IP所在的经纬度信息,该怎么办呢?html

百度地图为我提供了一种解决方案(固然还有其余的解决方案)。web

先总的来讲一下,想使用百度地图的接口,除了你要写一些php(其余代码固然也能实现,本文写的是php实现)代码以外,惟一须要的就是申请一个百度地图的 密钥(免费申请,过程简单)。有了这个密钥,就至关于百度给你了一个访问百度地图api的通行证了。json

百度地图的接口也分不少种,个人需求是:打开一个php页面就获取IP以及经纬度。api

2、具体过程:post

我会从头至尾,一步一步写出开发的过程,好了撸开袖子开干吧:spa

1.申请密钥(密钥和语言无关):code

先访问接口文档 高精度IP定位API·htm

blog

而后填写一个自定义的名称、写一个IP白名单(根据本身需求,可选),而后提交。

TIP:若是是第一次申请的话,百度会发手机验证码进行验证.

2.撸代码

<?php
header("Content-type: text/html; charset=utf-8"); 
?>
<?php

$user_ip= $_SERVER["REMOTE_ADDR"];//获取客户端IP 

get_lat_and_lng_ByIP($user_ip);

//根据IP获取经纬度
function get_lat_and_lng_ByIP($ip)
{
	if(empty($ip))
	{
		 return 'IP不能为空'; 
	}
	 $content = file_get_contents("http://api.map.baidu.com/highacciploc/v1?qcip=$ip&qterm=pc&ak=请输入您的AK&coord=bd09ll");  
	 $json = json_decode($content);
	 
	 $lng=$json->{'content'}->{'location'}->{'lng'};//提取经度数据
      
         $lat=$json->{'content'}->{'location'}->{'lat'};//提取纬度数据 

     echo "当前经度:".$lng;
     echo "<br/>";
    
     echo "当前纬度:".$lat;
}

 

访问效果:

这个接口电脑端访问的定位仍是挺准的;可是手机端访问就不许会差不少,最多只能到城市级别的精确度,请注意,至于缘由本人也很困惑,有知道的大侠但愿可以指点一下~
相关文章
相关标签/搜索