在iOS 10中,苹果对webkit定位权限进行了修改,所有定位请求的页面必须是https协议的。

如果是非https网页,在http协议下通过HTML5原生定位接口会返回错误,也就是无法正常定位到用户的具体位置,而已经支持https的网站则不会受影响。

目前提供的解决方案:

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

2、通过第三方API解决。

顺便附上定位方法:

    // //定位方法一
$(function(){
startgps();
});
//获取地理位置方法
function startgps()
{
//判断是否支持
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showgps,//成功回调函数
function(error) //失败回调函数
{
getPositionError(error);
},
{enableHighAcuracy: true, timeout:5000,maximumAge: 0}); // 这里设置超时为5000毫秒,即1秒
}
else
{
document.getElementById('geo_loc').innerHTML="您的浏览器不支持地图定位"; }
}
function showgps(position)
{
document.getElementById('longitude').innerHTML="经度"+position.coords.longitude+ "纬度"+position.coords.latitude;
getAddress(position.coords.latitude,position.coords.longitude); }
function getPositionError(error){
switch(error.code){ case error.TIMEOUT: alert("连接超时,请重试"); break; case error.PERMISSION_DENIED: alert("您拒绝了使用位置共享服务,查询已取消"); break; case error.POSITION_UNAVAILABLE: alert("亲爱的火星网友,非常抱歉,我们暂时无法为您所在的星球提供位置服务"); break; }
} //定位方法二
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(
function(position){
document.getElementById('longitude').innerHTML="经度"+position.coords.longitude+ "纬度"+position.coords.latitude;
document.getElementById('accuracy').innerHTML="误差"+position.coords.accuracy+"米";
getAddress(position.coords.latitude,position.coords.longitude);
},
function(error){
var errorType = ['您拒绝共享位置信息', '获取不到位置信息', '获取位置信息超时'];
// alert(errorType[error.code - 1]);
document.getElementById('geo_loc').innerHTML=error.code+"\n"+error.message;
document.getElementById('geo_loc').innerHTML= errorType[error.code - 1];
}
);
}else{
document.getElementById('geo_loc').innerHTML="您的浏览器不支持地图定位";
} function getAddress(latitude,longitude){
var geocoder;
var map = new AMap.Map("container", {
resizeEnable: true,
zoom: 18
})
var lnglatXY = [longitude,latitude];//需转为地址描述的坐标
//加载地理编码插件
var geocoder;
AMap.service(["AMap.Geocoder"], function() {
geocoder = new AMap.Geocoder({
radius: 1000,
extensions: "all"
});
//逆地理编码
geocoder.getAddress(lnglatXY, function(status, result){
//取回逆地理编码结果
if(status === 'complete' && result.info === 'OK'){
geocoder_CallBack(result);
}
});
});
}
function geocoder_CallBack(data) {
var address = data.regeocode.formattedAddress; //返回地址描述
document.getElementById("result").innerHTML = address;
}

IOS10 window.navigator.geolocation.getCurrentPosition 无法定位问题的更多相关文章

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

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

  2. 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题

    目前由于许多用户都将电话升级到了iOS系统,苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统.然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多 ...

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

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

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

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

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

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

  6. navigator.geolocation.getCurrentPosition

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

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

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

  8. js定位navigator.geolocation

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

  9. H5 Notes:Navigator Geolocation

    H5的地理位置API可以帮助我们来获取用户的地理位置,经纬度.海拔等,因此我们可以利用该API做天气应用.地图服务等. Geolocation对象是我们获取地理位置用到的对象. 首先判断浏览器是否支持 ...

随机推荐

  1. pip环境变量配置

    找到python安装目录,进入C:\Users\EDZ\AppData\Local\Programs\Python\Python37-32\Scripts  下.添加此地址到path中 打开cmd 输 ...

  2. Springboot打包放到Tomcat中报错 One or more listener fail to start

    1.问题: Springboot项目直接启动不报错,打war包放到外部容器Tomcat.东方通上,在@Weblistener注解的监听器类中报错 One or more listener fail t ...

  3. 记一次Idea+Gradle编译Spring源码遇到的坑

    打算开始研究Spring源码,于是照着书上的指导从网上下载了Spring5.0.2版本和Gradle4.0(必须JDK1.8.60以上),本地编译的时候没有任何问题,就是导入Idea的时候一直报下面这 ...

  4. SQL去掉重复数据

    SELECT vc_your_email,vc_our_ref_or_code INTO #tmp FROM( SELECT vc_your_email,vc_our_ref_or_code,ROW_ ...

  5. ca77a_c++__一个打开并检查文件输入的程序_流对象_操作文件

    /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14*/ /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14 */ #include < ...

  6. .Net Core服务监控报警指标上报Prometheus+Grafana

    前言 简单集成Prometheus+Grafana,指标的上报收集可视化. Prometheus Prometheus是一个监控平台,监控从HTTP端口收集受监控目标的指标.在微服务的架构里Prome ...

  7. Linux MySQL分库分表之Mycat

    介绍 背景 当表的个数达到了几百千万张表时,众多的业务模块都访问这个数据库,压力会比较大,考虑对其进行分库 当表的数据达到几千万级别,在做很多操作都比较吃力,考虑对其进行分库或分表 数据切分(shar ...

  8. chromedp入门

    chromedp入门 chromedp是什么? chromedp是go写的,支持Chrome DevTools Protocol 的一个驱动浏览器的库.并且它不需要依赖其他的外界服务(比如 Selen ...

  9. [ C++ ] 勿在浮沙筑高台 —— 内存管理(9~16p)primitives(下)

    per-class allocator 2 tips: operator new重载 不会被派生类实际使用,因为父类大小内存的分配交给子类去调用明显是不正确的.实际上会被转交至 : : operato ...

  10. JavaWeb网上图书商城完整项目--13.项目所需环境的搭建

    1.首先安装mysql 创建项目所需的数据库,直接运行项目提供的goods.sql文库 2.myeclipse创建一个web project ,项目的名称是goods 把视频中提供的项目原型下的提供的 ...