目前由于许多用户都将电话升级到了iOS系统,苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统。然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多网站时,会发现都无法进行正常精确定位,导致部分网站的周边推荐服务无法正常使用。为何在iOS 10下无法获取当前位置信息?这是因为在iOS 10中,苹果对webkit定位权限进行了修改,所有定位请求的页面必须是https协议的。如果是非https网页,在http协议下通过HTML5原生定位接口会返回错误,也就是无法正常定位到用户的具体位置,而已经支持https的网站则不会受影响。

目前提供的解决方案:

1、将网站的http设置为Https。

2、通过第三方解决,这也是我目前使用的方法。

首先看下代码差异:

1、在页面引入js

  1. <script src="/Content/Scripts/jquery.flexslider.js"></script>
  2. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>
  3. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>

window.navigator.geolocation.getCurrentPosition:通过手机的webKit定位(目前ios系统对非https网站不提供支持)

  1. navigator.geolocation.getCurrentPosition(translatePoint); //定位
  2. function translatePoint(position) {
  3. var currentLat = position.coords.latitude;
  4. var currentLon = position.coords.longitude;
  5. SetCookie("curLat", currentLat, 1);//设置cookie
  6. SetCookie("curLng", currentLon, 1);//设置cookie
  7. var gpsPoint = new BMap.Point(currentLon, currentLat);
  8. var pt = new BMap.Point(currentLon, currentLat);
  9. var geoc = new BMap.Geocoder();
  10. geoc.getLocation(pt, function (rs) {
  11. var addComp = rs.addressComponents;
  12. SetCookie("curLat", currentLat, 1); //设置cookie
  13. SetCookie("curLng", currentLon, 1); //设置cookie
  14. //alert(JSON.stringify(addComp));
  15. var city = addComp.city;
  1. //获得具体街道信息
  2. var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;
  3. $("#nowRoad").text(texts);
  4. });

2、网站不支持https访问

1、页面引入js

  1. <script src="/Content/Scripts/jquery.flexslider.js"></script>
  2. <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>
  3. <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>

2、获得定位方法

  1. var geolocation = new BMap.Geolocation();
  2. geolocation.getCurrentPosition(function (r) {
  3. if (this.getStatus() == BMAP_STATUS_SUCCESS) {
  4. var mk = new BMap.Marker(r.point);
  5. currentLat = r.point.lat;
  6. currentLon = r.point.lng;
  7. SetCookie("curLat", currentLat, 1); //设置cookie
  8. SetCookie("curLng", currentLon, 1); //设置cookie
  9. var pt = new BMap.Point(currentLon, currentLat);
  10. var geoc = new BMap.Geocoder();
  11. geoc.getLocation(pt, function (rs) {
  12. var addComp = rs.addressComponents;
  13. SetCookie("curLat", currentLat, 1); //设置cookie
  14. SetCookie("curLng", currentLon, 1); //设置cookie
  15. var city = addComp.city;
  16. var addComp = rs.addressComponents;
  17. var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;
  18. //获取地理位置成功,跳转
  19. }

完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题的更多相关文章

  1. 解决window.navigator.geolocation.getCurrentPosition在IOS10系统中无法进行地理定位问题

    昨天接到用户通知说在点击"看场地"时无法获取地理位置信息. 在接到通知时,首先想到的是排查机型问题.由于客户多为IOS用户,所以最先看的是在安卓是有没有此问题的发生,调查结果为安卓 ...

  2. navigator.geolocation在IOS10系统中无法定位问题

    在使用地图需要定位的朋友都可能遇到这个问题,参考的文章说的是用百度地图,我用的是腾讯地图,但是其中的原理差不多.所以谢谢这些提供资源的大神们. if (navigator.geolocation) { ...

  3. 在IOS10系统中无法定位问题

    果是非https网页,在http协议下通过html5原生定位接口会返回错误,也就是无法正常定位到用户的具体位置,而已经支持https的网站则不会受影响. 目前提供的解决方案: 1.将网站的http设置 ...

  4. IOS10 window.navigator.geolocation.getCurrentPosition 无法定位问题

    在iOS 10中,苹果对webkit定位权限进行了修改,所有定位请求的页面必须是https协议的. 如果是非https网页,在http协议下通过HTML5原生定位接口会返回错误,也就是无法正常定位到用 ...

  5. 用navigator.geolocation.getCurrentPosition在IOS10以上的系统无法定位

    昨天老板告诉我代码有Bug(定位失败),于是各种测试最终发现IOS10以上版本手机不能成功(穷,买不起iphone,测试不完全),先贴失败代码: var city =""; nav ...

  6. HTML5浏览器定位navigator.geolocation.getCurrentPosition

    <!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的坐标:</p> ...

  7. 【H5】 经纬度位置获取navigator.geolocation.getCurrentPosition

    navigator.geolocation.getCurrentPosition(function(){})经度 : coords.longitude 纬度 : coords.latitude 准确度 ...

  8. navigator.geolocation.getCurrentPosition

    navigator.geolocation.getCurrentPosition Geolocation API Specification 2nd Edition W3C Recommendatio ...

  9. js定位navigator.geolocation

    一.简介 html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置. window.navigator.geolocation提供了3个方法分 ...

随机推荐

  1. FineUI(开源版)v6.0中FState服务器端验证的实现原理

    前言 1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/ 2. 你可以通过捐赠作者来支持FineUI(开源版)的 ...

  2. FineUI(专业版)v3.0.0 发布,手机、平板和桌面全支持!

    FineUI(专业版)v3.0.0 已经正式发布,全面支持手机.平板和桌面!       自 2008 年 4 月发布第一个版本,我们持续更新了 126 个版本,拥有 16000 多位注册用户,130 ...

  3. Hibernate 缓存机制浅析

    1. 为什么要用 Hibernate 缓存? Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数据源 ...

  4. xv6的作业翻译——作业1 - shell和系统调用

    Xv6的lecture LEC 1 Operating systems   L1: O/S overview L1:O/S概述   * 6.828 goals 6.828的目标   Understan ...

  5. Web系统大规模并发——电商秒杀与抢购

    电商的秒杀和抢购,对我们来说,都不是一个陌生的东西.然而,从技术的角度来说,这对于Web系统是一个巨大的考验.当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要.这次我们 ...

  6. CTP程序化系统开发(C++ && PHP)

    2016-12-13 11:03:52 借助CTP的DEMO(上海期货交易公司提供的), 需要自己在 http://www.simnow.com.cn  上注册账号, 再者,需要下载[博易大师]软件, ...

  7. SAM初探

    SAM,即Suffix Automaton,后缀自动机. 关于字符串有很多玩法,有很多算法都是围绕字符串展开的.为什么?我的理解是:相较于数字组成的序列,字母组成的序列中每个单位上元素的个数是有限的. ...

  8. validate表单验证插件

    1.引入validate.js包 <script src="xx/xx/jquery.validate.min.js"></script> 2.表单验证 / ...

  9. H5+CSS3知识点

    概要:CSS3美化样式.自定义字体图标.滤镜设置.CSS3选择器.transform2D转换.新增表单控件.vaild表单验证.表单样式美化等. 属性选择器: E[attr]只使用属性名,但没有确定任 ...

  10. 逆向工程学习第二天--动手开发自己的第一个shellcode

    一个简单的c语言添加windows管理员账号的小程序,之前在渗透的时候经常用到,现在拿它来做自己的第一个shellcode. C代码: #pragma comment(lib, "netap ...