Vue中高德地图获取经纬度及逆地理解析的两种方式CDN或NPM(协议必须是https) 否则定位会一直失败

2023-11-19

// 高德地图获取经纬度 --npm方式
// npm i @amap/amap-jsapi-loader --save
import AMapLoader from "@amap/amap-jsapi-loader"; //npm方式

export function NPMGetLocation() {
    window._AMapSecurityConfig = {
        securityJsCode: '填写自己的秘钥', //秘钥
    }
    AMapLoader.reset(); //需要把这个reset一下 要不然会一直禁止多种API加载方式混用
    return new Promise((resolve, reject) => {
        AMapLoader.load({
            key: "填写自己的key", // 申请好的Web端开发者Key,首次调用 load 时必填
            version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
            plugins: ["AMap.Geolocation", 'AMap.Geocoder'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等

        })
            .then((AMap) => {
                var geolocation = new AMap.Geolocation({
                    enableHighAccuracy: true, // 是否使用高精度定位,默认:true
                    timeout: 10000, // 设置定位超时时间,默认:无穷大
                });
                var geocoder = new AMap.Geocoder()//逆地理解析
                geolocation.getCurrentPosition(function (status, result) {
                    if (status == "complete") {
                        const { lng, lat } = result.position
                        geocoder.getAddress([lng, lat], function (status, result) {
                            if (status === 'complete' && result.info === 'OK') {
                                //resolve({ type: '地理位置详细信息获取成功', ...result })

                            }
                        })
                        // resolve(result) //只需要获取经纬把这行打开--上面的resolve注释即可,看自己的需求
                    } else {
                        reject({ type: '地理位置详细信息获取失败', ...result })
                    }
                });
            })
            .catch((e) => {
                reject(e)
            });
    })
}
// 高德地图获取经纬度cdn方式
//在index.html的head中引入
//   <script type="text/javascript">
//   window._AMapSecurityConfig = {
//     securityJsCode: "" //秘钥
//   };
// </script>
// <script src="https://webapi.amap.com/maps?v=1.4.15&key=填自己的KEY"></script>
export function CDNGetLocation() {
    return new Promise((resolve, reject) => {
        AMap.plugin(["AMap.Geolocation", "AMap.Geocoder"], function () {
            const geolocation = new AMap.Geolocation({
                enableHighAccuracy: true,
                timeout: 10000,
            });
            var geocoder = new AMap.Geocoder();
            geolocation.getCurrentPosition((status, result) => {
                if (status === "complete") {
                    // 定位成功
                    const { lng, lat } = result.position;
                    geocoder.getAddress([lng, lat], function (status, result) {
                        if (status === "complete" && result.info === "OK") {
                            // result为对应的地理位置详细信息
                            resolve({ type: '地理位置详细信息获取成功', ...result });
                        } else {
                            reject("地理位置详细信息获取失败");
                        }
                    });
                    // resolve(result) //只需要获取经纬把这行打开--上面的resolve注释即可
                } else {
                    reject("获取当前位置失败");
                }
            });
        });
    });
}
//这里是封装成了公共的方法需要引入,直接复制使用
import { NPMGetLocation, CDNGetLocation } from "@/utils/utils";
//页面中使用方式
async initMap() {
      let result = await NPMGetLocation();
      console.log("result", result);
    
    },
mounted() {
    //DOM初始化完成进行地图初始化
    this.initMap();
  },

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue中高德地图获取经纬度及逆地理解析的两种方式CDN或NPM(协议必须是https) 否则定位会一直失败 的相关文章

  • 是否存在 IsCallable 为 false 但 IsConstructor 为 true 的 JS 对象?

    ECMAScript 规范函数可调用 https www ecma international org ecma 262 6 0 index html sec iscallable当且仅当其参数具有 Call 内部方法时返回 true 它在
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 为不同的架构安装node.js包

    我需要安装适用于与运行 npm 的计算机 Windows x86 不同的目标体系结构 Linux x64 的 npm 软件包 有没有办法告诉npm install下载适用于其他操作系统 架构的软件包 大多数本机节点模块使用node pre
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 在重复内容区域添加

    我有一个菜单组件 简单地说 它接受一个带有一系列选项的道具 并为每个选项在菜单中呈现一个项目 我希望能够根据用例自定义每个菜单项内的标记 因此我在菜单项元素内使用了占位符 你可以在这个中看到一个例子fiddle https jsfiddle
  • 隐藏 Div 的父级

    我只是想隐藏父divcomments section div class content content green div div div 我试过这个 document getElementById comments section pa
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 如何制作没有 ng-repeat 的模板并使用 Angular-drag-and-drop-lists 将数据传递到 $scope?

    我想用角度拖放列表 https github com marceljuenemann angular drag and drop lists使用我自己的网格模板到所见即所得编辑器 如何构建我自己的 HTML 模板而不需要ng repeat因
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • Firebase 函数 onWrite 未被调用

    我正在尝试使用 Firebase 函数实现一个触发器 该触发器会复制数据库中的一些数据 我想观看所有添加的内容votes user vote 结构为 我尝试的代码是 const functions require firebase func
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • Vue.js[vuex] 如何从突变中调度?

    我有一个要应用于 json 对象的过滤器列表 我的突变看起来像这样 const mutations setStars state payload state stars payload this dispatch filter setRev

随机推荐