移动端项目实现手机定位

一、手机定位原理

手机定位是通过特定的技术来获取移动手机或中断用户的位置信息(经纬度坐标),在电子地图上标出被定位对象的位置的技术或服务。

二、手机定位的方式

1.基于GPS定位,是利用手机的GPS定位模块将自己的位置信号发送到定位后台来实现手机定位,其定位精度较高。

2.基于移动运营网的基站的定位,是利用基站对手机的距离的测算距离来确定手机的位置,不需要手机具有GPS定位功能,但是经度很大程度依赖于基站的分布及覆盖范围的大小,误差会超过一公里。

3.基于Wifi定位,此定位在小范围内定位方式。

三、前端获取定位的坐标有几种方法;

1.通过H5的geolocation的属性:

代码如下:

if(navigator.geolocation){
  navigator.geolocation.getCurrentPosition(onSuccess , onError);
}else{
  alert("您的浏览器不支持使用HTML 5来获取地理位置服务");
}
//定位数据获取成功响应
function  onSuccess(position){
      alert('纬度: '          + position.coords.latitude          + '\n' +
      '经度: '         + position.coords.longitude         + '\n' +
      '海拔: '          + position.coords.altitude          + '\n' +
      '水平精度: '          + position.coords.accuracy          + '\n' +
      '垂直精度: ' + position.coords.altitudeAccura)
}
//定位数据获取失败响应
function onError(error) {
  switch(error.code)
  {
    case error.PERMISSION_DENIED:
    alert("您拒绝对获取地理位置的请求");
    break;
    case error.POSITION_UNAVAILABLE:
    alert("位置信息是不可用的");
    break;
    case error.TIMEOUT:
    alert("请求您的地理位置超时");
    break;
    case error.UNKNOWN_ERROR:
    alert("未知错误");
    break;
  }
}


2.通过cordova的插件获取:

** 要安装一个插件,使用如下命令

cordova plugin add cordova-plugin-geolocation

实现代码如下:

 document.addEventListener("deviceready",onDeviceReady,false);
 
            //Cordova加载完成会触发
            function onDeviceReady() {
            }
 
            function getCurrentPosition(){
                //定位数据获取成功响应
                var onSuccess = function(position) {
                    alert('纬度: '          + position.coords.latitude          + '\n' +
                          '经度: '         + position.coords.longitude         + '\n' +
                          '海拔: '          + position.coords.altitude          + '\n' +
                          '水平精度: '          + position.coords.accuracy          + '\n' +
                          '垂直精度: ' + position.coords.altitudeAccuracy  + '\n' +
                          '方向: '           + position.coords.heading           + '\n' +
                          '速度: '             + position.coords.speed             + '\n' +
                          '时间戳: '         + position.timestamp                + '\n');
                };
 
                //定位数据获取失败响应
                function onError(error) {
                    alert('code: '    + error.code    + '\n' +
                          'message: ' + error.message + '\n');
                }
 
                //开始获取定位数据
                navigator.geolocation.getCurrentPosition(onSuccess, onError);
            }


需要注意的:

        我在无网的时候获取经纬度时:由于在办公室内比较封闭,根本就获取不到经纬度坐标(当时自己不知道);在这个问题上一直没纠结了很长时间,以为获取经纬度跟网络有关系呢,其实一点关系都没有,只不过有网络的时候系统会优先使用网络或基站获取,所以大家不要误认为无网络就获取不到经纬度的误区;还有大家可以在手机上下载一个GPStest软件,它可以帮你检测经纬度甚至你所处的位置有几颗卫星都显示出来,很好用。。。

  • 16
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值