侧重:本文探索了 http 协议下,pc + 移动端定位解决方案

IOS版本: ios14

原生Geolocation 接口:

Document

Show my location

function geoFindMe() {

var output = document.getElementById("out");

var msg = document.getElementById("msg");

if (!navigator.geolocation) {

output.innerHTML = "

您的浏览器不支持地理位置

";

return;

} else {

msg.innerHTML = "

支持地理位置

";

// Register for location changes

var watchId = navigator.geolocation.getCurrentPosition(scrollMap, handleError);

function scrollMap(position) {

latitude = position.coords.latitude;

longitude = position.coords.longitude;

console.log(latitude, longitude)

output.innerHTML = '

Latitude is ' + latitude + '°
Longitude is ' + longitude + '°

';

// Scroll the map to center position

}

function handleError(error) {

console.log("error:start-->", error, "

}

}

}

MDN上标注:

Secure context

This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

实际应用时,测试条件下,本地端口localhost:5000/dist,

power by tomcat

火狐浏览器: 支持;

edge浏览器:支持;

ie11 :不支持

google chrome:不支持

google chrome + vpn:支持

ios11 safari : 支持

ios13 safari : 不支持

华为自带浏览器:不支持

云之家内嵌浏览器:不支持

原生定位接口,是基于浏览器定位,会首先优先考虑返回值速度,从而基于IP 或者 WIFI 定位,对于有GPS支持的设备,会消耗更长的时间,定位依赖于浏览器,所以兼容性存在不同

地图厂家公开的接口做了封装处理,使之兼容性增强,目前测试来看,百度相比较高德地图在移动端做的兼容性更好。

在开发“获取当前位置”的需求时,使用高德就遇到了浏览器支持,移动端安卓,ios都不支持的情况。 百度到的信息极少。 但也有少数几篇文章遇到了同样的问题:

我的解决方式是先使用高德去尝试获取定位信息,获取不到就用百度的api。 由于公司有和金蝶云之家合作,云之家的移动定位做的还是比较稳定的,所以我补了一个云之家的定位(仅支持从云之家内调用)

INIT_TEST() {

let _this = this;

AMap.plugin("AMap.Geolocation", function () {

var geolocation = new AMap.Geolocation({

// 是否使用高精度定位,默认:true

enableHighAccuracy: true,

// 设置定位超时时间,默认:无穷大

timeout: 10000,

// 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)

buttonOffset: new AMap.Pixel(10, 20),

// 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false

zoomToAccuracy: true,

// 定位按钮的排放位置, RB表示右下

buttonPosition: "lb",

});

geolocation.getCurrentPosition(function (status, result) {

if (status == "complete") {

console.log("resultresultresultresult", result);

onComplete(result);

console.log("gaode");

_this.map.setZoomAndCenter(13, [

result.position.lng,

result.position.lat,

]);

} else {

_this.lib_getPosition();

}

});

function onComplete(data) {

// data是具体的定位信息

}

function onError(data) {

// 定位出错

}

});

},

lib_getPosition() {

let _this = this;

var BMapGeolocation = new BMap.Geolocation();

BMapGeolocation.getCurrentPosition(function (r) {

if (r.latitude && r.longitude) {

console.log("baidu");

_this.InitPosition.latitude = r.latitude;

_this.InitPosition.longitude = r.longitude;

_this.map.setZoomAndCenter(13, [

r.longitude,

r.latitude,

]);

// console.log(_this.InitPosition);

} else {

getQingJsAPI();

}

function getQingJsAPI() {

console.log("qingjs");

qing.call("getLocation", {

success: function (result) {

_this.InitPosition.latitude = result.data.latitude;

_this.InitPosition.longitude = result.data.longitude;

_this.map.setZoomAndCenter(13, [

result.data.longitude,

result.data.latitude,

]);

// console.log(_this.InitPosition);

},

});

}

});

},

先用高德去尝试定位,获取不到 ? 百度定位 ?(一般都能获取到了),还不行? 用云之家 !

实际上,从代码效率上考虑,应该判断设备,去应用不同的api可能效率更高一些。

高德h5定位误差_#高德地图api移动端定位失败解决方案 #H5 原生Geollocation接口Chomre浏览器的坑...相关推荐

  1. php调用百度地图定位,php用百度地图API进行IP定位和GPS定位

    /** * 根据地理坐标获取国家.省份.城市,及周边数据类(利用百度Geocoding API实现) * 百度密钥获取方法:http://lbsyun.baidu.com/apiconsole/key ...

  2. 高德h5定位误差_高德地图定位JS API不准确问题

    到网上找了个解决高德偏移量的代码 https://blog.csdn.net/woshimu... 我的是ip定位 转换过的定位就准确了 this.map.plugin('AMap.Geolocati ...

  3. h5精准定位_手机端H5地理定位结合腾讯地图API实现精准定位!

    最近项目需求,需要精准定位,但是网上搜了好久都没有解决办法,当然微信定位的方案还是可行的,手机H5 就没有这方面的教程了. 捣鼓好久啊,花了一早上的时间研究出来了.这里有个大坑,要开启手机的定位才能获 ...

  4. Android使用高德地图api实现基础定位

    Android使用高德地图api实现基础定位(一) 关于 会获取SHA1的可自行跳过这一步 第二步引用高德sdk 第三步修改MainActivity.java 关于 这篇主要讲如何使用高德sdk(不是 ...

  5. android开发之高德地图API篇:1、高德地图API之实时定位+轨迹可视化

    TIME:2020年7月6日 高德地图API之实时定位+轨迹可视化 前言: step1.工程的配置 step2.显示地图 step2.实现静态定位: step3.实时定位 step4.实现轨迹可视化: ...

  6. 高德地图API之IP定位

    高德地图API之IP定位(替换你的KEY) IP定位API:http://lbs.amap.com/api/webservice/guide/api/ipconfig package com.gdma ...

  7. js 实现精准定位(使用百度地图API)

    获取定位城市 使用百度地图API时记得申请AK 使用步骤如下 1.0 引用 <script type="text/javascript" src="http://a ...

  8. HTML5+百度地图API实现地理定位

    背景 如果知道用户在哪里,往往会提高很多Web应用的体验,比如为用户指明方向,对它们要去的地方给出建议,让用户知道它们所在的区域内有哪些人可能会对某个活动感兴趣等等.现在,利用HTML5(以及基于Ja ...

  9. 百度地图api,第一次定位成功,后面505错误

    百度地图api,第一次定位成功,后面505错误 1.查看key对不对 2.查看AndroidManifest中放的位置对不对,是放在 <application里面与 <activity a ...

最新文章

  1. java人工洗牌窗口程序_求解,用JAVA写洗牌与发牌模拟程序
  2. 机器学习笔记七:损失函数与风险函数
  3. cv2.circle函数
  4. Matlab 函数:padarray
  5. linux 修改超级权限密码,linux 修改用户密码
  6. java_codereview随笔
  7. JS,Jquery 调用 C#WebService
  8. Facebook开源动画库 POP-POPBasicAnimation运用
  9. GitHub项目管理维护实用教程
  10. 【转】JAVA中的转义字符
  11. java 计算器类图_多态计算器(封装、继承、多态、简单工厂)
  12. 链表的常见操作(转)
  13. win10 通过xrdp远程连接到ubuntu后,显示顶端快捷工具栏,显示最小化后的应用
  14. 机器学习十大经典算法——逻辑回归
  15. 电脑显卡驱动,怎么安装电脑显卡驱动?正确方法在这里!
  16. HTML和CSS面试题—整理过的48题,关注收藏,持续更新
  17. CCNet:Criss-Cross Attention for semantic Segmentation
  18. 子母钟运用在什么领域,设备如何调试,天穹告诉你子母钟系统授时的意义
  19. 电子计算机eniac的储存能力有限 只能,电子计算机ENIAC的存储能力有限,只能存储简单的控制程序代码。...
  20. Sandy Bridge架构首款赛扬悄然发布

热门文章

  1. Unity --- 导航网格 与 导航的使用
  2. VMware虚拟机装windows xp系统
  3. java具名参数_Spring框架笔记(二十五)——NamedParameterJdbcTemplate与具名参数
  4. 一个去除pdf回车符的网页
  5. 微信移动学习平台小程序 后台基于php+mysql
  6. P02014026黄一洋————信息论问题回答
  7. 如何在模拟器里面脱360的壳
  8. 陕西奥罗国际大酒店配电房改造
  9. 【Java学习笔记1】Java概述 -背景+环境搭建
  10. 吴恩达《深度学习》课程介绍