前面的文章中写到通过获取iP来获取位置信息,使用wifi或PC端还行,但是如果使用手机自己的网就会可能出现卡办理的地址,这样就违背了我们的想要获取的位置信息;所以今天使用js获取到经纬度然后调用百度接口来获取位置具体信息,测试过,大概范围一公里左右,主要还是获取城市的名称,这样就够用了。不多说了,直接上代码:
js:这里将代码直接加到js中就行,
注意~注意:该方法只支持 https 协议!!!http获取不到
//获取经纬度坐标
function getPosition (callback) {
if ("geolocation" in navigator) {
var geo_options = {
enableHighAccuracy: true,
maximumAge: 0,
timeout : 6000
};
navigator.geolocation.getCurrentPosition(function(pos) {
// 获取到当前位置经纬度
var lng = pos.coords.longitude;
var lat = pos.coords.latitude;
callback(lng,lat);
}, function(err){
console.log(err.message);
}, geo_options);
} else {
console.log("Browser didnt support geolocation");
}
};
下面是调用:这段代码应该会用吧
getPosition(function(lng,lat){
var out=document.getElementById('out');
out.outerHTML='当前经度:'+lng+'<br/>当前纬度'+lat;
});
然后通过ajax将获取到的经纬度发送到后台
php:
public function local_ip()
{
$lng = $_POST['lng'];//获取的经度
$lat = $_POST['lat'];//获取的纬度
//注意链接中的经纬度位置。前面的是纬度,后面的是经度
$url = 'http://api.map.baidu.com/geocoder?location='.$lat.','.$lng.'&output=json&key=你自己的秘钥';
$res = file_get_contents($url);
$res = json_decode($res,true);
echo json_encode($res);
}
这样在ajax中返回的就是你想要的位置信息了!!!