1:定位参考说到地理坐标,就少不了定位参考。在web开发过程中,有几种定位基准:第一种是IP,根据当前电脑或移动设备的IP地址来确定当前的地理坐标。IP定位是通过ISP机房,即每个注册机房的位置,比如小区,每栋楼都会有一个注册ISP机房。如果使用IP定位,可以精确到小区或楼宇级别。比如第一栋楼和第二栋楼可以通过这个IP地址准确区分。IP定位的误差在十米左右。其次是GPS,GPS是基于卫星定位的,比较准确,但是需要硬件支持。例如,电脑一般没有GPS定位功能。它的精度非常高,如果是军用,可以达到1米以内。第三种WIFI定位,WiFi定位是通过每个WiFi地址的Mac地址,特别准确。如果WiFi已经注册过,它的误差在一米左右。WiFi是有信号辐射范围的,可以根据辐射范围的强弱来判断当前设备距离WiFi多远。但是它的支撑性能不是很好,只能在室内支撑。第四种GSM和CDMA比较常见,用手机卡定位,也就是基于设备的基站。比如联通的信号塔和电信的信号塔,精度比较高,一般用于手机或者通讯设备。不同的信号塔会接收来自不同方向的信号,然后根据信号的叠加和强弱来判断当前位置,其精度可达10米左右。最后一个由用户指定。您可以手动指定当前位置。如果当前位置不准确,我们需要进行更正以指定当前位置。最常见的就是我们平时在使用打车软件的时候,如果自动获取的位置不准确,那么我们可以通过四处走动来手动指定自己的当前位置。2:获取过程获取定位参考后,我们需要获取当前的地理坐标,有一个获取过程。首先打开网页应用,然后向浏览器请求地理信息。这时会弹出一个查询窗口。由于位置信息涉及隐私,浏览器做了双重保护。如果查询后您同意,浏览器便会从设备或可信服务器获取位置信息并返回。3:浏览器兼容性4:获取用户当前坐标(如何获取地理坐标)getCurrentPosition(onSuccess,onError,options);onSuccess是一个回调函数,options有三个值:enableHighAccuracy(高精度识别,在设备或服务器能返回范围内的最高精度),timeout(超过时间,如果在指定时间内无法获取位置信息time,会返回Error,默认为0(无穷大)),maximumAge(缓存时间)。constgetLocation=()=>{constoptions={enableHighAccuracy:false,maximumAge:1000}if(navigator.geolocation){//浏览器支持地理定位navigator.geolocation.getCurrentPosition(onSuccess,onError,options);}else{//浏览器不支持geolocationalert('当前浏览器不支持getLocation');}}//成功回调函数onSuccess(position){constlongitude=position.coords.longitude;//纬度constlatitude=position.coords.latitude;console.log('位置',{经度,纬度});}//失败回调函数onError(error){switch(error.code){case1:alert("Locationservicedenied");休息;case2:alert("暂时无法获取位置信息");休息;case3:alert("获取信息超时");休息;案例4:警报(“未知错误”);休息;}}5:不断获取用户当前位置(科学在线)watchCurrentPosition(onSuccess,onError,options);让watchId=未定义;constgetLocation=()=>{constoptions={enableHighAccuracy:false,maximumAge:1000}if(navigator.geolocation){//浏览器支持地理定位watchId=navigator.geolocation.watchPosition(showPosition);}else{//浏览器不支持geolocationalert('当前浏览器不支持getLocation');}}functionshowPosition(position){constlongitude=position.coords.longitude;constlatitude=position.coords.latitude;console.log('位置',{经度,纬度});}constcancel=()=>{//清除当前,继续获取当前Location,可以看做是一个setIntervalif(watchId)navigator.geolocation.clearWatch(watchId);}6:coordscoords.latitude-十进制数的纬度coords.longitude-十进制数的经度coords.accuracy-位置精度coords.altitude-海拔高度,coords.altitudeAccura以米为单位海拔cy-位置的高度精度coords.heading-航向,以真北为单位的度数coords.speed-速度,以米/秒为单位timestamp-响应的日期/时间
