苹果手机ios10网站不能地图定位问题的解决方法
时间:2017-03-14 13:48来源:无锡做网站公司
苹果手机是一度被很多国人追捧的神器,甚至不惜卖肾去买的一个破手机。新版苹果IOS10系统也更新出来了,很多用户呢,也在第一时间更新了一下,瞬间觉得自己高大上了许多。
然而,我们的技术却发现,在新版IOS10环境下的苹果手机,打开客户网站的时候发现无法进行地图定位,显示错误信息为“定位失败”。那么,这个是对用户体验的一个巨大问题,甚至会造成用户流失等负面影响。
是什么原因导致了网站自动定位失败呢?(如下图)
起初,我们以为是IOS10系统屏蔽了国内的百度地图定位信息,在调试中发现,其实是web站没有及时支持https协议,因为IOS系统升级改版支持协议了。
其实,苹果手机对webkit定位权限进行了修改,所有定位请求的页面必须是https协议的!(我勒个去...)而且在http协议下通过HTML5原生定位接口会返回错误,也就是无法正常定位到用户的具体位置,而已经支持https的网站则不会受影响。
如何解决IOS10下地图定位失败的问题呢?
我们提供两种方案,供广大的技术人员和站长进行修改调试。
一、把你网站的http协议设置为Https,把代码中出现的http协议全部更换掉,不要遗漏。
二、借助第三方技术解决方案,分两种情况进行介绍:
第一种情况:假如网站不支持https访问
1、页面引入js
<script src="/Content/Scripts/jquery.flexslider.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
2、使得网站获得定位的方法
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function (r) {
if (this.getStatus() == BMAP_STATUS_SUCCESS) {
var mk = new BMap.Marker(r.point);
currentLat = r.point.lat;
currentLon = r.point.lng;
SetCookie("curLat", currentLat, 1); //设置cookie
SetCookie("curLng", currentLon, 1); //设置cookie
var pt = new BMap.Point(currentLon, currentLat);
var geoc = new BMap.Geocoder();
geoc.getLocation(pt, function (rs) {
var addComp = rs.addressComponents;
SetCookie("curLat", currentLat, 1); //设置cookie
SetCookie("curLng", currentLon, 1); //设置cookie
var city = addComp.city;
var addComp = rs.addressComponents;
var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;
//获取地理位置成功,跳转
}
第二种情况:webkit定位方案
1、在页面引入js,代码请注意比较上一种情况
<script src="/Content/Scripts/jquery.flexslider.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6yAoynmTPNlTBa8z1X4LfwGE"></script>
<script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
2、 通过手机的webKit定位方案(目前ios系统对非https网站不提供支持):window.navigator.geolocation.getCurrentPosition
navigator.geolocation.getCurrentPosition(translatePoint); //定位
function translatePoint(position) {
var currentLat = position.coords.latitude;
var currentLon = position.coords.longitude;
SetCookie("curLat", currentLat, 1);//设置cookie
SetCookie("curLng", currentLon, 1);//设置cookie
var gpsPoint = new BMap.Point(currentLon, currentLat);
var pt = new BMap.Point(currentLon, currentLat);
var geoc = new BMap.Geocoder();
geoc.getLocation(pt, function (rs) {
var addComp = rs.addressComponents;
SetCookie("curLat", currentLat, 1); //设置cookie
SetCookie("curLng", currentLon, 1); //设置cookie
//alert(JSON.stringify(addComp));
var city = addComp.city;
//获得具体街道信息
var texts = addComp.district + "-" + addComp.street + "-" + addComp.streetNumber;
$("#nowRoad").text(texts);
});
至此,苹果手机定位修复成功!
以上的javascript代码,可以进行地图定位的一个调试,大家可以参考使用。无锡马氪软件专业从事网站开发与无锡做网站、APP开发运营、设计等,竭诚希望能与社会各界朋友合作。
声明:除非注明,本站内容由无锡网站建设马氪软件原创发布©,转载请联系我们授权合作。