geolocation 对象

下面的方法只能获取到粗精度

注意: 无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。

参考: JS获取本地经纬度

一个最简单的调用方法

window.navigator.geolocation.getCurrentPosition(function (position) {
    console.log(position.coords.latitude)
    console.log(position.coords.longitude)

封装好的代码如下:

function getPosition () {
  return new Promise((resolve, reject) => {
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function (position) {
        let latitude = position.coords.latitude
        let longitude = position.coords.longitude
        let data = {
          latitude: latitude,
          longitude: longitude
        resolve(data)
      }, function () {
        reject(arguments)
    } else {
      reject('你的浏览器不支持当前地理位置信息获取')

调用方法如下:

      // 获取当前经纬度坐标
      getPosition().then(result => {
        // 返回结果示例:
        // {latitude: 30.318030999999998, longitude: 120.05561639999999}
        // 一般小数点后只取六位,所以用以下代码搞定
        let queryData = {
          longtitude: String(result.longitude).match(/\d+\.\d{0,6}/)[0],
          latitude: String(result.latitude).match(/\d+\.\d{0,6}/)[0],
          channelType: '00'
        console.log(queryData)
        // 以下放置获取坐标后你要执行的代码:
        // ...
      }).catch(err => {
        console.log(err)

记得,这是一个异步操作,所以获取坐标后需要执行的代码不能直接写在函数后面,而是应该写在then里面(参照注释所写的位置)

参考:移动端获取当前用户的经纬度

一、HTML5 geolocation的属性

if(navigator.geolocation){
  navigator.geolocation.getCurrentPosition(onSuccess , onError);
}else{
  alert("您的浏览器不支持使用HTML 5来获取地理位置服务");
//定位数据获取成功响应
function  onSuccess(position){
      alert('纬度: '          + position.coords.latitude          + '\n' +
      '经度: '         + position.coords.longitude         + '\n' +
      '海拔: '          + position.coords.altitude          + '\n' +
      '水平精度: '          + position.coords.accuracy          + '\n' +
      '垂直精度: ' + position.coords.altitudeAccura)
//定位数据获取失败响应
function onError(error) {
  switch(error.code)
    case error.PERMISSION_DENIED:
    alert("您拒绝对获取地理位置的请求");
    break;
    case error.POSITION_UNAVAILABLE:
    alert("位置信息是不可用的");
    break;
    case error.TIMEOUT:
    alert("请求您的地理位置超时");
    break;
    case error.UNKNOWN_ERROR:
    alert("未知错误");
    break;

二、百度地图api定位

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=xxxxxxxxxx"></script>
 <script type="text/javascript" src="http://developer.baidu.com/map/jsdemo/demo/convertor.js"></script>
 <script>
    window.BMap = BMap;
    let BMap = window.BMap
    let geolocation = new BMap.Geolocation()
    geolocation.enableSDKLocation(); //允许SDK辅助
    geolocation.getCurrentPosition(function (r)
        if(this.getStatus() == 0){
        console.log(r)
 </script>

HTML5获取地理经纬度并通过百度接口得到实时位置
百度地图api
百度地图鹰眼记录轨迹

三 、腾讯地图api定位

<iframe id="geoPage" width=0 height=0 frameborder=0  style="display:none;" scrolling="no"
    src="https://apis.map.qq.com/tools/geolocation?key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&referer=myapp">
</iframe>
window.addEventListener('message', function(event) {
    // 接收位置信息
    var loc = event.data;
    console.log('location', loc);
}, false)       ;
setTimeout(function() {
    if (!_this.loc) {
       console.log('定位超时')
}, 6000) // 6s为推荐值,业务调用方可根据自己的需求设置改时间,不建议太短

在这里插入图片描述
腾讯地图组件API
腾讯JavaScript API

参考:vue使用腾讯地图定位

引入js包(注意:vue项目得在首页的index.html里面引入)

<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=yourkey"></script>
//这个是固定的用这个链接就可以
<script src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
<template>
    <div id="container" style="width:600px;height:500px;"></div>
</template>
<script>
    export default{
        name:'news',
        data() {
            return {
                longitude:0,//经度
                latitude:0,//纬度
                city:''
        methods:{
  //第一部分
              //定位获得当前位置信息
            getMyLocation() {
                var geolocation = new qq.maps.Geolocation("yourkey", "yourkey名称");
                geolocation.getIpLocation(this.showPosition, this.showErr);
                //geolocation.getLocation(this.showPosition, this.showErr);//或者用getLocation精确度比较高
            showPosition(position) {
                console.log(position);
                this.latitude = position.lat;
                this.longitude = position.lng;
                this.city = position.city;
                this.setMap();
            showErr() {
                console.log("定位失败");
                this.getMyLocation();//定位失败再请求定位,测试使用
//第二部分
        //位置信息在地图上展示
            setMap() {
                //步骤:定义map变量 调用 qq.maps.Map() 构造函数   获取地图显示容器
                //设置地图中心点
                var myLatlng = new qq.maps.LatLng(this.latitude,this.longitude);
                //定义工厂模式函数
                var myOptions = {
                  zoom: 13,               //设置地图缩放级别
                  center: myLatlng,    //设置中心点样式
                  mapTypeId: qq.maps.MapTypeId.ROADMAP  //设置地图样式详情参见MapType
                // //获取dom元素添加地图信息
                var map = new qq.maps.Map(document.getElementById("container"), myOptions);
//第三部分
              //给定位的位置添加图片标注
                var marker = new qq.maps.Marker({
                    position: myLatlng,
                    map: map
                });
                //给定位的位置添加文本标注
                var marker = new qq.maps.Label({
                    position: myLatlng,
                    map: map,
                    content:'这是我当前的位置,偏差有点大,哈哈'
                });
        mounted() {
            this.getMyLocation();
</script>

在这里插入图片描述
小伙伴们用的时候可以一步一步去实现,保证每一步都实现后再进行下一步

vue使用腾讯地图(一)https://www.jianshu.com/p/130cdbd07394
vue使用腾讯地图(二)事件https://www.jianshu.com/p/0ce29aec5f47
vue使用腾讯地图(三)标注https://www.jianshu.com/p/eca4f20ee1cb
vue使用腾讯地图(四)定位实战qq.maps.Geolocation

申请key地址https://lbs.qq.com/console/mykey.html

官方文档
https://lbs.qq.com/tool/component-geolocation.html
https://lbs.qq.com/javascript_v2/guide-start.html

H5获取参考geolocation 对象下面的方法只能获取到粗精度注意:无 GPS 模块的 PC 设备使用 Chrome 浏览器的时候,位置信息是连接谷歌服务器获取的,国内用户可能获取位置信息失败。参考:JS获取本地经纬度一个最简单的调用方法window.navigator.geolocation.getCurrentPosition(function (position) { ... https://segmentfault.com/a/1190000009249162 本文将简述一下如何通过HTML5和百度地图开放平台提供的API来实现对浏览器的定位,同时记录了遇到的问题和解决方案。实现效果为显示出用户所在的省市,即: XXX省 XXX市。 利用HTML5 提供的API获取到用户的经纬度信息,再将用户的经纬度信息传到百度地图开放平台,百度地图开放平台根... if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(geoSuccess, geoError) }else{ alert('浏览器不支持地理定位。') 2.处理成功逻辑 function geoSuccess(position) { var lat = position.coords.latitude var lng = position.coords <title>根据地址查询经纬度</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://api.map.baidu.com/api?
目录前言前期准备注册成为开发者,获取KeyIP定位和逆地理编码API文档思路讲解1、IP地址获取2、IP定位获取经纬度3、逆地理编码获取地理位置代码实现本地运行版web服务版ip_pos.htmlget_ip.c 本文主要通过高德地图API进行一系列的分析。提供具体的讲解和源码。 请勿非法使用,本人概不负责。 临时测试页面:传送门 注册成为开发者,获取Key 高德开发平台:https://console.amap.com/dev/key/app 填写相关信息成为开发者
H5 API 地理定位 地理定位在日常生活中应用比较广泛,例如,互联网打车、在线地图等。在HTML 5的规范中,增加了获取用户地理位置信息的接口Geolocation,开发者可以通过经纬度获取用户的地理位置信息,Geolocation接口的特点如下。 Geolocation接口封装了获取位置信息的技术细节。 开发者不需要关心信息的来源,只需关注如何使用即可,这极大地简化了开发的难度。 目前...
介绍:Leaflet是一个开源的JavaScript库,对移动端友好且对地图有很好的交互性。 大小仅仅只有 33 KB, 同时具有大多数地图所需要的特点。 Leaflet设计的非常简单易懂, 同时具有很好的性能和易用性。 它在桌面端和移动端都工作的相当高效,并有大量的插件用于扩张Leaflet的功能。微信公众号:673399718嘻嘻demo图如下: 使用leaflet.js生成世界地图非常方...
需求:使用腾讯地图,通过输入的地址获取经纬度 1.先引入腾讯地图,参考https://blog.csdn.net/l13620804253/article/details/117254651 2.要调用腾讯地图API获取当前位置的经纬度,需要使用腾讯地图位置服务https://apis.map.qq.com/ws/geocoder/v1/接口(附上楼梯https://lbs.qq.com/service/webService/webServiceGuide/webServiceGeocoder),该接口前端
要根据经纬度实现车辆移动轨迹,你可以使用地图 API 来绘制地图和标注车辆位置,然后使用 JavaScript 代码定期更新车辆位置并将其在地图上显示。 以下是一个基本的实现步骤: 1. 创建一个地图,并在地图上标注车辆的起始位置。可以使用像 Google Maps 或者百度地图这样的 API 来创建地图。 2. 从车辆 GPS 等位置获取设备获取经纬度信息,并将其保存到数据库或其他数据源中。 3. 使用 JavaScript 或其他编程语言从数据源中获取车辆的经纬度信息,并使用地图 API 将其在地图上显示出来。 4. 定期获取车辆的最新经纬度信息,并在地图上更新车辆的位置。 5. 可以根据需求将车辆位置的历史信息保存到数据库中,从而生成车辆移动轨迹。可以使用像 Leaflet 这样的库来实现轨迹线条的绘制和动画效果。 下面是一个使用百度地图 API 的示例代码: ```html <!DOCTYPE html> <meta charset="utf-8"> <title>车辆实时位置</title> <style type="text/css"> #map { width: 100%; height: 600px; margin: 0 auto; </style> </head> <div id="map"></div> <script src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script> <script type="text/javascript"> // 创建地图实例 var map = new BMap.Map("map"); // 设置地图中心点,例如:北京 var point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); // 添加车辆标注 var carIcon = new BMap.Icon("car.png", new BMap.Size(32, 32)); var carMarker = new BMap.Marker(point, {icon: carIcon}); map.addOverlay(carMarker); // 更新车辆位置 function updateCarPosition(lng, lat) { var newPoint = new BMap.Point(lng, lat); carMarker.setPosition(newPoint); // 模拟更新车辆位置 setInterval(function() { // 从数据源中获取车辆最新经纬度信息 var lng = 116.404 + Math.random() * 0.01; var lat = 39.915 + Math.random() * 0.01; // 更新车辆位置 updateCarPosition(lng, lat); }, 5000); </script> </body> </html> 在这个示例中,我们首先创建了一个地图实例,并在地图上添加了一个车辆标注。然后,我们编写了一个 `updateCarPosition` 函数来更新车辆位置。在函数中,我们通过创建一个新的 `BMap.Point` 对象来表示车辆的最新位置,并将其传
pycharm debug 的时候报错:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 1022-1023: unex Ghost face190: 无法创建备份文件 (pydevd_comm.py~)。 该文件将保持不变。 (必行方案)PPT快捷键复制一次粘贴两次问题 lsshenggge: 非常可行,必行方案,点赞 uviewUI中u-popup组件show属性显示和不显示控制问题 知来者之可追JS: uview真难用 python操作csv文件:读取、写入、末行追加 OGAS45: 写得真的是特别好特别详细——【立志于在每一个帮助了我的博客下方留下足迹】