php获取用户当前坐标,web端定位:获取当前地理位置
方法一:html5原生提供的定位:
讲解:在支持HTML5的浏览器下,navigator对象下有一个属性----geolocation,而geolocation属性又有个方法getCurrentPosition(回调函数1,回调函数2)可以通过浏览器向设备发起定位请求,浏览器就会让设备发送相关指令到附近上网设备,上网设备返回定位信息给用户设备,浏览器就获得了用户位置。
当浏览器获得定位信息成功,则navigator.geolocation.getCurrentPosition(回调函数1,回调函数2); 中的回调函数1执行,如果定位失败,则回调函数2执行。
若定位成功,则自动把定位结果对象作为参数传递给回调函数1,。 若定位失败,则自动把错误对象传递给回调函数2. 所以在回调函数2中可通过error.code 获取到错误码。(假设形参名为error)。
如下代码就是用HTML5获取定位信息,并把成功定位交给showPosition处理,把错误定位交给showError处理。
eg:
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(showPosition,showError);
}else{
alert(Geolocation is not supported by this browser);
} //浏览器不支持HTML5.
详细代码:
*{
height: 100%; //设置高度,不然会显示不出来
}
$(function(){
navigator.geolocation.getCurrentPosition(translatePoint); //定位
});
function translatePoint(position){
var currentLat = position.coords.latitude;
var currentLon = position.coords.longitude;
var gpsPoint = new BMap.Point(currentLon, currentLat);
BMap.Convertor.translate(gpsPoint, 0, initMap); //转换坐标:gpsPoint:转换前坐标,第二个参数为转换方法,0表示gps坐标转换成百度坐标,callback回调函数,参数为新坐标点
}
function initMap(point){
//初始化地图
map = new BMap.Map("map");
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
map.centerAndZoom(point, 15);
map.addOverlay(new BMap.Marker(point))
}
注释:
这是因为htm5 的 getCurrentPosition 获取到的坐标是 GPS 经纬度坐标,而百度地图的坐标是经过特殊转换的,所以,在获取定位坐标和初始化地图之间需要进行一步坐标转换工作,该转换方法百度API里面已经提供了,转换一个点或者批量装换的方法均有提供:单个点转换需引用 http://developer.baidu.com/map/jsdemo/demo/convertor.js,批量转换需引用 http://developer.baidu.com/map/jsdemo/demo/changeMore.js,这里只需要前者即可:
方法二:百度地图提供的API
(1)通过浏览器定位:
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
浏览器定位
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
if(this.getStatus() == BMAP_STATUS_SUCCESS){
var mk = new BMap.Marker(r.point);
map.addOverlay(mk);
map.panTo(r.point);
alert('您的位置:'+r.point.lng+','+r.point.lat);
}
else {
alert('failed'+this.getStatus());
}
},{enableHighAccuracy: true})
//关于状态码
//BMAP_STATUS_SUCCESS检索成功。对应数值“0”。
//BMAP_STATUS_CITY_LIST城市列表。对应数值“1”。
//BMAP_STATUS_UNKNOWN_LOCATION位置结果未知。对应数值“2”。
//BMAP_STATUS_UNKNOWN_ROUTE导航结果未知。对应数值“3”。
//BMAP_STATUS_INVALID_KEY非法密钥。对应数值“4”。
//BMAP_STATUS_INVALID_REQUEST非法请求。对应数值“5”。
//BMAP_STATUS_PERMISSION_DENIED没有权限。对应数值“6”。(自 1.1 新增)
//BMAP_STATUS_SERVICE_UNAVAILABLE服务不可用。对应数值“7”。(自 1.1 新增)
//BMAP_STATUS_TIMEOUT超时。对应数值“8”。(自 1.1 新增)
(2)通过ip定位:
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
IP定位获取当前城市
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
function myFun(result){
var cityName = result.name;
map.setCenter(cityName);
alert("当前定位城市:"+cityName);
}
var myCity = new BMap.LocalCity();
myCity.get(myFun);
百度地图Api:
//让所有点在视野范围内 pointArray:点集合
map.setViewport(pointArray);
//清除所有点集合
map.clearOverlays();
注释:
百度地图开放平台:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
百度地图生成器:http://api.map.baidu.com/lbsapi/creatmap/index.html
http://developer.baidu.com/map/jsdemo.htm#i8_2
申请百度地图API密匙步骤:http://jingyan.baidu.com/article/363872eccda8286e4aa16f4e.html
百度地图 地名 转换成经纬度 参考文章:http://www.jb51.net/article/58396.htm
方法三:高德地图定位:
地址:http://lbs.amap.com/api/javascript-api/example/map/map-show/
大家自己去查看
参考:http://blog.csdn.net/suixufeng/article/details/13511761
http://www.jb51.net/html5/208408.html
http://blog.csdn.net/xmtblog/article/details/45093661
php获取用户当前坐标,web端定位:获取当前地理位置相关推荐
- Android开发——后台获取用户点击位置坐标(可获取用户支付宝密码)
1. getevent命令 我们首先是根据adb shell getevent命令获取到被点击位置的信息. 这里要说明的是,不同的手机手机获得的点击输出是不一样的.以我的真机为例,输出如下 本文原创, ...
- java微信获取用户列表_微信公众平台 获取用户列表
一.接口说明 公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的Open ...
- php获取当前的地理位置,web端定位:获取当前地理位置
方法一:html5原生提供的定位: 讲解:在支持HTML5的浏览器下,navigator对象下有一个属性----geolocation,而geolocation属性又有个方法getCurrentPos ...
- 微信扫描PC端二维码跳转到小程序确认登录通过WebSocket来获取用户信息达到PC端登录
需求: 在pc端获取后端给的token值来生产二维码(这里后端给了我两个url:一个是二维码url,一个是ws的 url),用微信扫描二维码跳转到小程序写的确定登录页面(进行确定):然后在PC端使用W ...
- 微信小程序 uniapp 点击获取用户实时当前位置进行定位
步骤一:该函数(authorization)是用来触发获取为信用户当前位置(getWxLocation)和用户位置授权(toSetting)的: async authorization() {let ...
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号
获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...
- 微信授权获取用户的openid和支付宝授权获取用户的userid
为什么80%的码农都做不了架构师?>>> 当一请求一个链接或者是扫描二维码时,会请求后台方法,当然对于微信和支付宝来说,大多数时候是扫 码 一.首先说微信: 1.首先会判断请求 ...
- 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解
最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...
- 【微信公众号开发】获取用户信息时,有时成功获取,有时提示“invalid openid hint”
原因:保存openid的session在某个方法里被重新赋新值了.所以一旦调用了这个方法,再去获取用户信息时,就会报错.
最新文章
- 1003 我要通过!
- java Serializable 详解
- 我所碰到的面试题之------前端常见浏览器兼容性问题解决方案---
- php下webservice使用总结
- Linux网络编程基础_6_应用层(下)--E-mail,WWW(大结局)
- Linux下GCC的安装,GCC链接外部库
- 每天一个Linux命令之date
- 在双11大促中的数据库服务器
- java二叉树的实现_二叉树的实现(Java语言描述)
- java泛型程序设计——调用遗留代码
- 第八章 数据结构与算法
- linux面试题:删除一个目录下的所有文件,但保留一个指定文件
- 【java】打印一个序列,第一项和第二项都是1,以后的每一项都是前面两项的和。
- 使用Python调用Netconf进行配置
- Params属性的用法 (beginner)
- 转python 发送邮件实例
- 如何制作专属的VS Code主题
- mysql计算连续天数,mysql连续登录天数,连续天数统计
- RocketMQ消息发送源码解析
- Mac系统空格预览放大图片