IOS10 window.navigator.geolocation.getCurrentPosition 无法定位问题
在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 无法定位问题的更多相关文章
- 解决window.navigator.geolocation.getCurrentPosition在IOS10系统中无法进行地理定位问题
昨天接到用户通知说在点击"看场地"时无法获取地理位置信息. 在接到通知时,首先想到的是排查机型问题.由于客户多为IOS用户,所以最先看的是在安卓是有没有此问题的发生,调查结果为安卓 ...
- 完美解决window.navigator.geolocation.getCurrentPosition,在IOS10系统中无法定位问题
目前由于许多用户都将电话升级到了iOS系统,苹果的iOS 10已经正式对外推送,相信很多用户已经更新到了最新的系统.然而,如果web站没有及时支持https协议的话,当很多用户在iOS 10下访问很多 ...
- 用navigator.geolocation.getCurrentPosition在IOS10以上的系统无法定位
昨天老板告诉我代码有Bug(定位失败),于是各种测试最终发现IOS10以上版本手机不能成功(穷,买不起iphone,测试不完全),先贴失败代码: var city =""; nav ...
- HTML5浏览器定位navigator.geolocation.getCurrentPosition
<!DOCTYPE html> <html> <body> <p id="demo">点击这个按钮,获得您的坐标:</p> ...
- 【H5】 经纬度位置获取navigator.geolocation.getCurrentPosition
navigator.geolocation.getCurrentPosition(function(){})经度 : coords.longitude 纬度 : coords.latitude 准确度 ...
- navigator.geolocation.getCurrentPosition
navigator.geolocation.getCurrentPosition Geolocation API Specification 2nd Edition W3C Recommendatio ...
- navigator.geolocation在IOS10系统中无法定位问题
在使用地图需要定位的朋友都可能遇到这个问题,参考的文章说的是用百度地图,我用的是腾讯地图,但是其中的原理差不多.所以谢谢这些提供资源的大神们. if (navigator.geolocation) { ...
- js定位navigator.geolocation
一.简介 html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置. window.navigator.geolocation提供了3个方法分 ...
- H5 Notes:Navigator Geolocation
H5的地理位置API可以帮助我们来获取用户的地理位置,经纬度.海拔等,因此我们可以利用该API做天气应用.地图服务等. Geolocation对象是我们获取地理位置用到的对象. 首先判断浏览器是否支持 ...
随机推荐
- pip环境变量配置
找到python安装目录,进入C:\Users\EDZ\AppData\Local\Programs\Python\Python37-32\Scripts 下.添加此地址到path中 打开cmd 输 ...
- Springboot打包放到Tomcat中报错 One or more listener fail to start
1.问题: Springboot项目直接启动不报错,打war包放到外部容器Tomcat.东方通上,在@Weblistener注解的监听器类中报错 One or more listener fail t ...
- 记一次Idea+Gradle编译Spring源码遇到的坑
打算开始研究Spring源码,于是照着书上的指导从网上下载了Spring5.0.2版本和Gradle4.0(必须JDK1.8.60以上),本地编译的时候没有任何问题,就是导入Idea的时候一直报下面这 ...
- SQL去掉重复数据
SELECT vc_your_email,vc_our_ref_or_code INTO #tmp FROM( SELECT vc_your_email,vc_our_ref_or_code,ROW_ ...
- ca77a_c++__一个打开并检查文件输入的程序_流对象_操作文件
/*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14*/ /*ca77a_c++__一个打开并检查文件输入的程序 习题:8.13 8.14 */ #include < ...
- .Net Core服务监控报警指标上报Prometheus+Grafana
前言 简单集成Prometheus+Grafana,指标的上报收集可视化. Prometheus Prometheus是一个监控平台,监控从HTTP端口收集受监控目标的指标.在微服务的架构里Prome ...
- Linux MySQL分库分表之Mycat
介绍 背景 当表的个数达到了几百千万张表时,众多的业务模块都访问这个数据库,压力会比较大,考虑对其进行分库 当表的数据达到几千万级别,在做很多操作都比较吃力,考虑对其进行分库或分表 数据切分(shar ...
- chromedp入门
chromedp入门 chromedp是什么? chromedp是go写的,支持Chrome DevTools Protocol 的一个驱动浏览器的库.并且它不需要依赖其他的外界服务(比如 Selen ...
- [ C++ ] 勿在浮沙筑高台 —— 内存管理(9~16p)primitives(下)
per-class allocator 2 tips: operator new重载 不会被派生类实际使用,因为父类大小内存的分配交给子类去调用明显是不正确的.实际上会被转交至 : : operato ...
- JavaWeb网上图书商城完整项目--13.项目所需环境的搭建
1.首先安装mysql 创建项目所需的数据库,直接运行项目提供的goods.sql文库 2.myeclipse创建一个web project ,项目的名称是goods 把视频中提供的项目原型下的提供的 ...