18910140161

html5 Geolocation 地理定位

顺晟科技

2021-06-16 10:56:55

233

一、Geolocation 概述

地理定位应用编程接口使用网页中的地理定位对象为javaScript提供经度和纬度。使用地理定位对象,您可以获得用户的位置,并跟踪用户位置的变化。

1.1 Geolocation API 获取地理位置的方式

该设备使用以下数据源:

知识产权地址——随处可得,不

GPS——非常,定位时间长,耗电大,室内效果差,需要额外的设备

WiFi基站的Mac地址-准确,可以在室内使用,但在无线接入点少的地方不太有效

GSM或CDMA基站——它相当,可以在室内使用,但在基站很少的地区效果不佳

为了使用更高的精度,许多设备使用一个或多个数据源组合。

1.2 地理位置获取流程:

用户打开需要获取地理位置的web应用程序。

应用程序通过地理定位应用编程接口向浏览器请求地理位置,浏览器拦截该请求并向用户请求授权。

假设用户允许,浏览器向设备查询相关信息,如IP地址、WIFI地址或GPS坐标。

浏览器将相关信息发送给可信的外部定位服务器,服务器返回具体的地理位置。

1.3 隐私

地理定位API规范提供了一套保护用户隐私的机制,用户的位置信息只有在明确许可的情况下才能获取。

使用地理定位API访问页面应用时,会触发隐私保护机制,浏览器会询问用户是否共享位置信息。

用于收集位置数据的应用程序的开发人员应考虑以下隐私准则:

由于位置数据是敏感信息,开发人员应考虑遵循以下准则:

仅在必要时询问位置信息,并且仅将其用于最初计划使用的任务。

如果用户没有被授权存储数据,则应该在相应的任务完成后立即删除该应用程序。

如果要在服务器上存储位置数据,请确保未经授权不得访问位置数据,并允许用户更新和删除此信息。

1.4 应用场景

更新本地信息

显示用户周围的兴趣点

车辆导航系统

二、Geolocation 使用

地理定位应用编程接口使用起来非常简单,请求位置信息,如果用户同意,就返回位置信息。

2.1 检测浏览器是否支持Geolocation

使用html5地理定位API时,确保浏览器支持地理定位API。

if(navigator . geolocation){ console . log('支持Geolocation,');} else { console.log('您的broswer不支持地理定位,');}

2.2 getCurrentPosition 和 watchPosition

使用getCurrentPosition方法获取当前地理位置。

使用观察位置方法监控位置随时间的变化。

语法:

//getcurrentpositionnavigator . geolocation . getcurrentposition(success callback,errorCallback,options);//watch position navigator . geolocation . watch position(success callback,errorCallback,options);

这两种方法都使用异步回调。它们具有相同的参数:

success callback浏览器成功获取位置信息后的回调函数。

error callback位置信息获取失败时使用的回调函数。

选项配置参数以调整地理定位的数据收集方法

启用高精度-指示浏览器获得高精度的位置,默认值为假。打开时可能没有任何效果,浏览器可能需要更长时间才能获得更准确的位置数据。

超时-更大有效期。此参数指定重复获取地理位置时,需要多长时间才能再次获取位置。默认值为0,这意味着浏览器需要立即重新计算位置。

maximum image-指示程序可接受的缓存位置的更大过期时间。接受一个数字作为参数,默认值为0微秒。这意味着默认情况下,每次获取位置时都必须获取一个新位置。

2.3 clearWatch()

此方法接受一个参数,需要清理监控位置变化的方法的ID:watch ID(此参数由watchPosition方法返回)。

2.4 示例:

var watch id=navigator。地理定位。watch position(function(position){//success回调var coords=position。坐标;控制台。日志(坐标。纬度);//纬度console.log(坐标。经度);//经度控制台。日志(坐标。准确性);//准确度,由于地理定位的实现方式,呈现返回值时一定要检查返回值的准确度控制台。日志(坐标。身高);//海拔,以米为单位,如不支持高度特性,返回空控制台。日志(坐标。altitudeaccracy);//海拔经度,以米为单位,如不支持高度特性,返回空控制台。日志(坐标。标题);//行进方向,相对正北控制台。日志(坐标。速度);//行进速度,单位m/s console.log(时间戳);//获取位置的时间},函数(错误){ //错误回调console.log('获取位置信息失败。');console.log(错误。代码);//UNKNOWN_ERROR(错误代码0) -未知错误//PERMISSION_DENIED(错误代码1) -用户拒绝共享地理位置//POSition _ INVALID(错误代码2) -无法获取当前位置//超时(错误代码3) -在指定时间无法获取位置会触发此错误。},{//optionsenable高精度: true,maximumAge: 30000,time out : 27000 });

三、Geolocation Demo

html 5医生。com/demos/geolocation/geolocation-watch position-示例。超文本标记语言

扩展阅读

dev.w3.org/geo/api/spec-source.html

msdn。微软。com/zh-cn/library/ie/gg 589513(v=vs . 85).文件

msdn.microsoft.com/zh-CN/hh781006

developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation

html5demos.com/geo

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航