记录一次移动端定位问题

需求:

  1. 在微信公众号获取用户的经纬度,识别用户所在城市;
  2. 根据数据库存储的店铺地址,调用百度地图API换算距离,将用户附近店铺根据距离远近排序展示给用户,点击附近店铺可进入百度地图导航界面

问题分析

问题:

使用Html5去获取用户的定位信息,即经度和纬度。在安卓手机上是可以正常获取的,但是在苹果IOS手机上是无法获取的,会提示错误信息,截图如下,并附原始获取用户的经度和纬度的代码:
IOS手机错误提示为
翻译为:调用者没有权限使用地理定位服务

//没有权限使用地理定位服务
 origin does not have permission to use geolocation service

截图如下:
这里写图片描述

原始Html5获取经度和纬度代码

以下代码在安卓可以获取经纬度,在IOS不可以,会提示上述错误

<script type="text/javascript">
$(function(){

    var options ={};
    //判断手机是否支持该功能,并获取经纬度
    if(navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(success,error,options);
    }
    else
    {
        alert('你的浏览器不支持定位功能');
    }
    //成功的回调
    function success(lo,la)
    {
        var la = position.coords.latitude;
        var lo = position.coords.longitude;
        alert('纬度'+la);alert('经度'+lo);
        //something.......
    }
    //失败的回调
    function error(errorCode)
    {
        alert('获取失败,原因:'+errorCode.message);
    }
})
</script>

问题产生原因

苹果的IOS做了限制,如果需要使用IOS的服务,必须是HTTS协议的域名,不能是HTTP。而博主公司的域名是HTTP的,所以直接使用HTML5调用是不被IOS允许的。

解决方案

思路:
调用腾讯地图接口,腾讯接口会使用HTTPS协议去调用html5拿到用户经纬度,然后返回给我。
代码如下:
1、引入JS

<script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js "></script>

2、获取经纬度


<script type="text/javascript" >
    //填入自己在腾讯地图开放平台申请的KEY
   var geolocation = new qq.maps.Geolocation("IRVBZ-GVWRK-3HHJV-ARRRR-QMQCS-XXXX", "myapp");
    var options = {timeout: 8000};
    geolocation.getLocation(sucCallback, errCallback,options);  
    //成功的回调
    function sucCallback(position)
    {
        var mapInfo=JSON.stringify(position, null, 4);
        var jsonMapInfo=eval('(' + mapInfo + ')');
        //alert("经度"+jsonMapInfo.lng+"维度"+jsonMapInfo.lat);        
        success(jsonMapInfo.lng,jsonMapInfo.lat);
    }
    //失败的回调
    function errCallback()
    {
          alert("定位失败!");
    }    
    //业务逻辑    
    function success(lo,la)
    {
        //拿到经纬度的业务逻辑...
    }   
</script>  

参考链接:
http://science.china.com.cn/2016-09/14/content_9034800.htm
http://lbs.qq.com/tool/component-geolocation.html
http://lbs.qq.com/
http://www.cnblogs.com/jishuzhaichen/p/5933660.html
好吧,到此问题就差不多解决了,非常感谢热心博主–时光城主的指点

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值