基于vue 2.0的H5页面中使用H5自带的定位,高德地图定位,搜索周边商户,覆盖物标记,定位到当前城市

基于vue的H5页面中使用高德地图定位,搜索周边商户,覆盖物标记

首先安装高德地图插件
npm i @amap/amap-jsapi-loader --save
地图承载容器
<template>
  <div id="container"></div>
</template>
地图容器样式
<style  scoped>
    #container{
        padding:0px;
        margin: 0px;
        width: 100%;
        height: 800px;
    }
</style>
引入 JS API Loader ,并初始化地图,增加覆盖物标记marker
<script>
import AMapLoader from "@amap/amap-jsapi-loader";
import axios from "axios";
import Qs from "qs";
export default {
  data() {
    return {
      map: null,
      marker: [],
      arr: [
        {
          name: "如意湖",
          icon: "https://img1.baidu.com/it/u=3590267805,2648573622&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",
          ip1: 113.73241336023165,
          ip2: 34.77923169201559,
        },
      ],
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      var _this = this;
      AMapLoader.load({
        key: "xxxxx", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ["AMap.Geolocation"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          this.map = new AMap.Map("container", {
            //设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 13, //初始化地图级别
            center: [113.73072265943132, 34.77648371816693], //初始化地图中心点位置
          });
          for (var i = 0; i < _this.arr.length; i++) {
            var content = `<div class='marker-wrap'><img  src='${_this.arr[i].icon}' /><div class='marker-txt'>${_this.arr[i].name}</div></div>`; //自定义覆盖物内容
            var markerItem = new AMap.Marker({
              position: [_this.arr[i].ip1, _this.arr[i].ip2], // 经纬度
              offset: new AMap.Pixel(-13, -20), //覆盖物偏移量
              content: content, //自定义内容
            });
            markerItem.on("click", _this.markerClick); //为覆盖物增加点击事件
            markerItem.setExtData({ deviceMarkId: _this.arr[i] }); //为覆盖物点击事件增加自定义参数
            _this.marker.push(markerItem); //在地图上渲染覆盖物
          }

          this.map.add(this.marker);
        })
        .catch((e) => {
          console.log(e);
        });
    },
    markerClick(e) {
      var demo = e.target.getExtData();
      console.log("demo: ", demo);
    },
  },
};
</script>

高德地图实现定位,域名必须是https开头(官方要求,不然会定位失败),然后必须是手机开启定位才行,在电脑上无法定位成功,AMap.Geolocation
 initMap() {
      var _this = this;
      AMapLoader.load({
        key: "xxxx", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ["AMap.Geolocation"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          this.map = new AMap.Map("container", {
            //设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 13, //初始化地图级别
            // center: [113.73072265943132, 34.77648371816693], //如果使用高德的定位,这个可以不用写,初始化地图中心点位置
          });
          const OPTIONS = {
            // 是否使用高精度定位,默认:true
            enableHighAccuracy: true,
            // 设置定位超时时间,默认:无穷大
            timeout: 3000,
            maximumAge: 0, //定位结果缓存0毫秒,默认:0
            convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
            showButton: true, //显示定位按钮,默认:true
            // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
            buttonOffset: new AMap.Pixel(10, 20),
            //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
            zoomToAccuracy: true,
            showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
            showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
            panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
            //  定位按钮的排放位置,  RB表示右下
            buttonPosition: "RB",
          };
          var geolocation = new AMap.Geolocation(OPTIONS);
          _this.map.addControl(geolocation);
          geolocation.getCurrentPosition();
          AMap.event.addListener(geolocation, "complete", onComplete);
          AMap.event.addListener(geolocation, "error", onError);
          function onComplete(data) {
            console.log("data: ", data);
            // data是具体的定位信息
          }

          function onError(err) {
            console.log("err: ", err);
            // 定位出错
          }
        })
        .catch((e) => {
          console.log(e);
        });
    },
高德地图实现周边搜索,关键字搜索,检索不得超过80个字符,分页返回,每页最大值为25条,搜索结果截图如下
  search() {
      var params = {
        key: "xxx", //用户在高德地图官网申请Web服务API类型Key
        keywords: "丹尼斯|悦来悦喜", //需要被检索的地点文本信息。多个关键字用“|”分割,文本总长度不可超过80字符
        page_size: 25, //	当前分页展示的数据条数
        page_num: 1, //请求第几分页
        location: "113.73072265943132,34.77648371816693", //坐标之间不能有空格,否则会请求不成功,中心点坐标
        radius: 3000, //	搜索半径 ,取值范围:0-50000
        output: "json", //返回结果格式类型,
      };
      axios({
        url: "https://restapi.amap.com/v5/place/around?" + Qs.stringify(params),
        method: "get",
        headers: {
          "Content-Type": "application/x-www-form-urlencoded",
        },
      }).then((res) => {
        console.log("res: ", res);
      });
    },
    initMap() {
      var _this = this;
      AMapLoader.load({
        key: "xx", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: [], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          _this.map = new AMap.Map("container", {
            //设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 13, //初始化地图级别
            center: [113.73072265943132, 34.77648371816693], //初始化地图中心点位置
          });
          _this.search();
        })
        .catch((e) => {
          console.log(e);
        });
    },

![在这里插入图片描述](https://img-blog.csdnimg.cn/512e7143440a434eb16e1a3cbd9b0dd6.png

高德地图实现定位城市及详细经纬度,geolocation.getCurrentPosition,geolocation.getCityInfo
initMap() {
      var that = this;
      AMapLoader.load({
        key: "xxx", // 申请好的Web端开发者Key,首次调用 load 时必填
        version: "1.4.15", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
        plugins: ["AMap.Geolocation"], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
      })
        .then((AMap) => {
          that.map = new AMap.Map("container", {
            resizeEnable: true,
            //设置地图容器id
            viewMode: "3D", //是否为3D地图模式
            zoom: 16, //初始化地图级别
            // center: [113.73072265943132, 34.77648371816693], //初始化地图中心点位置
          });
          const OPTIONS = {
            // 是否使用高精度定位,默认:true
            enableHighAccuracy: true,
            // 设置定位超时时间,默认:无穷大
            timeout: 3000,
            maximumAge: 0, //定位结果缓存0毫秒,默认:0
            convert: true, //自动偏移坐标,偏移后的坐标为高德坐标,默认:true
            showButton: true, //显示定位按钮,默认:true
            // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
            buttonOffset: new AMap.Pixel(10, 20),
            //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
            zoomToAccuracy: true,
            showMarker: true, //定位成功后在定位到的位置显示点标记,默认:true
            showCircle: true, //定位成功后用圆圈表示定位精度范围,默认:true
            panToLocation: true, //定位成功后将定位到的位置作为地图中心点,默认:true
            //  定位按钮的排放位置,  RB表示右下
            buttonPosition: "RB",
          };
          var geolocation = new AMap.Geolocation(OPTIONS);
          that.map.addControl(geolocation);
          geolocation.getCityInfo((status, result) => {
            if (status == "complete") {
               console.log(result)
              geolocation.getCurrentPosition((status1, result1) => {
                if (status1 == "complete") {
                 console.log(result1)
                } else {
                 console.log(result1)
                }
              });
            } else {
              console.log(result)
            }
          });
        })
        .catch((e) => {
          console.log(e);
        });
    },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/147560.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于跨域问题的个人理解

我也工作蛮多年了&#xff0c;期间既做过前端也做过后端。对于跨域问题&#xff0c;究竟是由前端程序员还是后端程序员来解决&#xff0c;我在不同的时期有不同的理解。现在&#xff0c;我更倾向于认为跨域问题应该由前端程序员来解决&#xff0c;即使在解决跨域问题的过程中涉…

全志R128基础组件开发指南——图像采集

图像采集 CSI&#xff08;DVP&#xff09; 图像采集 SENSOR -> CSI 通路 CSI &#xff08;CMOS sensor interface&#xff09;接口时序上可支持独立 SYNC 和嵌入 SYNC(CCIR656)。支持接收 YUV422 或 YUV420 数据。 VSYNC 和HSYNC 的有效电平可以是正极性&#xff0c;也可…

计算机网络之物理层

物理层 1. 物理层的基本概念 2.物理层下面的传输媒体 传输媒体可分为两类&#xff0c;一类是导引型传输媒体&#xff0c;另一类是非导引型传输媒体。 3.传输方式 3.1 串行传输和并行传输 串行传输&#xff1a;串行传输是指数据是一个比特依次发送的&#xff0c;因此在发送端…

如何使用Servlet写一个简单的网站

文章目录 前言1. 创建项目2. 引入依赖3. 创建目录4. 编写代码5. 打包程序6. 部署7.验证程序将 tomcat 集成到 idea 中 前言 前面我们学习了Java中常用的 HTTP 服务器 tomcat 的安装和使用&#xff0c;那么今天我们将使用这个 HTTP 服务器为大家写一个简单的网站&#xff0c;这…

AI技术如何融合应用于工业物联网

人工智能技术在近年来得到飞跃性地发展&#xff0c;在自主识别、分析、判断、规划等功能方面都进步显著&#xff0c;也已经应用于越来越多的行业产业。 在工业物联网领域&#xff0c;人工智能也将成为一大助力&#xff0c;通过与工业物联网系统集成融合&#xff0c;能够为工业…

Word多出一页空白页删不掉?这5个方法要记好!

“我在用Word编写文档时经常会遇到一个问题&#xff0c;文档排版都完成了&#xff0c;但是总会有一个空白页是无法删掉的&#xff0c;怎么解决这个问题呢&#xff1f;请大家帮帮我&#xff01;” 在使用Word编辑文档时&#xff0c;可能很多用户有时都会遇到一个常见问题&#x…

小型洗衣机哪个牌子质量好?性价比高的迷你洗衣机推荐

这两年内衣洗衣机可以称得上较火的小电器&#xff0c;小小的身躯却有大大的能力&#xff0c;一键可以同时启动洗、漂、脱三种全自动为一体化功能&#xff0c;在多功能和性能的提升上&#xff0c;还可以解放我们双手的同时将衣物给清洗干净&#xff0c;让越来越多小伙伴选择一款…

vue中bus的详细使用

vue中关于兄弟组件bus的使用方法 首先&#xff0c;bus可以用在任何组件之间的传值 废话不多说&#xff0c;请看下面代码解说 首先&#xff0c;先创建bus.js文件&#xff0c;然后在引用&#xff0c;这里有两种引用方法&#xff1a;局部引用和全局引用。 // bus.js文件内容 imp…

客服易中招的3大常见职业病及缓解方法分享

1️⃣无论和谁聊天都可以“亲”~“亲亲”我也很无奈&#xff0c;但真的习惯了&#xff08;其实也不是什么病啦&#xff0c;还能让朋友觉得我性格变好了呢哈哈哈&#xff09; 2️⃣鼠标手&#xff08;腕管综合征&#xff09;其实很多上班族都有这个职业病。但由于我们客服工作属…

OpenHarmony 开发者论坛正式上线,盖楼赢惊喜好礼~

你&#xff0c;是否曾遇到 OpenHarmony 开发难题&#xff0c;却不知找谁解答&#xff1f; 你&#xff0c;是否曾想分享 OpenHarmony 技术&#xff0c;但没有一个官方投稿平台&#xff1f; 你&#xff0c;是否想加入火热的 OpenHarmony 开源项目&#xff0c;却不知如何参与和贡…

Spring 只用一招,就摆脱被垃圾回收的命运,拯救了自己

SpringBoot ApplicationContext 会被 JVM 当成垃圾对象&#xff0c;然后回收掉吗&#xff1f; 最近五阳哥在复习JVM 垃圾回收的知识&#xff0c;被别人问到这个问题&#xff0c;我心里感到一惊&#xff0c;如果Spring 被回收掉&#xff0c;Spring管理的bean全部会被回收&#…

【Proteus仿真】【Arduino单片机】HC-SR04超声波测距

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用PCF8574、LCD1602液晶、HC-SR04超声波传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示超声波检测距离。 二、软件设计 …

vcenter server (部署较大服务器)

作用 VMware vCenter是集中管理控制台&#xff0c;管理所有安装了VMware ESXI的主机 使用vCenter Server可以对虚拟机进行实时的监控&#xff0c;包括服务器硬件、网络和共享的存储&#xff0c;并可以进行故障诊断。 可以查看实时的统计和图表&#xff0c;监控虚拟主机和资源…

盘点49个Python网站项目Python爱好者不容错过

盘点49个Python网站项目Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1aFYJtNZjgst1l5KFBckP2A?pwd8888 提取码&#xff1a;8888 项目名称 A simpleshorturl…

使用vscode的ssh进行远程主机连接

1. 首先安装好“远程资源管理器”&#xff08;这一步建议谷歌下&#xff09;&#xff0c;如下图所示 2. 按F1&#xff0c;设置远程主机信息的SSH Configuration config file, 注意这里可以添加多个远程主机信息&#xff0c;通过注释掉无关远程主机信息来选择想连接的那个主机&a…

国产双核DSP与 TI 的TMS320F28377 大PK

国产DSP&#xff0c;QX320F28377与 TI的 TMS320F28377 孰强孰弱

计算机毕业设计项目选题推荐(免费领源码)PHP+MySQL在线网络教育平台66984

目 录 摘要 1 绪论 1.1 课题背景 1.2意义 1.3HTML介绍 1.4JavaScript 运行模式 1.5css3工作原理 1.6论文结构与章节安排 2 在线网络教育平台分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 3 2.2.2数据修改流程 4 2.2.3数据删除流程 4 2.3 系统功能分析 …

新生儿吐奶:原因、科普和注意事项

引言&#xff1a; 新生儿吐奶是许多新父母常见的经历&#xff0c;尽管大多数情况下是正常的&#xff0c;但对于父母来说&#xff0c;了解吐奶的原因以及如何处理是至关重要的。本文将科普新生儿吐奶的原因&#xff0c;提供相关信息&#xff0c;并为父母和监护人提供注意事项&a…

第二篇 《随机点名答题系统》——题库管理详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)

目录 1.功能需求 2.数据库设计 3.流程设计 4.关键代码 4.1.题库维护 4.1.1数据请求示意图 4.1.2添加题库&#xff08;login.php&#xff09;数据请求代码 4.1.3删除题库&#xff08;login.php&#xff09;数据请求代码 4.1.4 业务处理Service&#xff08;tiKuService…

Redis最新2023年面试题高级面试题及附答案解析(1)【Redis最新2023年面试题高级面试题及附答案解析-第三十八刊】

文章目录 Redis最新2023年面试题高级面试题及附答案解析(1)01、为什么 Redis 需要把所有数据放到内存中&#xff1f;02、查看 Redis 使用情况及状态信息用什么命令&#xff1f;03、MySQL里有2000w数据&#xff0c;Redis 中只存20w的数据&#xff0c;如何保证 Redis 中的数据都是…