Vue接入高德地图的完整实例

目录
  • 前言
  • 参考资料
  • Vue接入高德地图
    • 引用
    • 使用
  • 实现点击按钮缩放功能
    • 地图放大
    • 地图缩小
  • 测量距离
  • 测量面积
  • 行政区划查询渲染
  • 关键字搜索
  • 鼠标绘制区域
  • 总结

前言

Vue 使用高德地图,实现缩放,鼠标绘制,测距、测面积、行政区域范围绘制、关键词查询等操作。

参考资料

高德地图API官网:https://lbs.amap.com/

高德地图2.0参考手册:https://lbs.amap.com/api/jsapi-v2/documentation#pixel

高德地图2.0示例代码:https://lbs.amap.com/demo/list/jsapi-v2

Vue接入高德地图

引用

首相要在index.html文件中引入高德地图。

<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=您申请的key值&plugin=AMap.ToolBar"></script>

使用

在需要写地图的页面中添加一个div用来展示地图,记得为这个div设置高度和宽度,不然显示不出来。

<div id="mapDiv"></div>

然后写 TS 代码把地图显示出来。

	  // 加载地图
      initMap() {
        map = new AMap.Map('mapDiv', {
          zoom: 11,//级别
          center: [116.34703902, 40.48188],//中心点坐标
          viewMode: '3D'//使用3D视图
        });
      },

然后地图就出现了。

实现点击按钮缩放功能

首先写两个静态按钮,缩放也很简单,就两行代码就可以了。

地图放大

map.zoomIn()

地图缩小

map.zoomOut()

测量距离

测量距离稍微麻烦点,但是也还好其实。

首先我们要在初始化地图完成之后,创建一个鼠标绘制工具。

    // 测距、测面积使用
    mouseTool = new AMap.MouseTool(map);

MouseTool 这个插件需要在index.html文件的script中引入一下,就是plugin参数后边加就可以,用英文的逗号隔开。

<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=您申请的key值&plugin=AMap.ToolBar,AMap.MouseTool"></script>

然后写一个按钮“测距”,点击的时候就执行测距方法。

   // 开始测距
   start() {
       mouseTool.rule({
            startMarkerOptions: {//可缺省
              icon: new AMap.Icon({
                size: new AMap.Size(19, 31),//图标大小
                imageSize: new AMap.Size(19, 31),
                image: "//webapi.amap.com/theme/v1.3/markers/b/start.png"
              }),
              offset: new AMap.Pixel(-9, -31)
            },
            endMarkerOptions: {//可缺省
              icon: new AMap.Icon({
                size: new AMap.Size(19, 31),//图标大小
                imageSize: new AMap.Size(19, 31),
                image: "//webapi.amap.com/theme/v1.3/markers/b/end.png"
              }),
              offset: new AMap.Pixel(-9, -31)
            },
            midMarkerOptions: {//可缺省
              icon: new AMap.Icon({
                size: new AMap.Size(19, 31),//图标大小
                imageSize: new AMap.Size(19, 31),
                image: "//webapi.amap.com/theme/v1.3/markers/b/mid.png"
              }),
              offset: new AMap.Pixel(-9, -31)
            },
            lineOptions: {//可缺省
              strokeStyle: "solid",
              strokeColor: "#FF33FF",
              strokeOpacity: 1,
              strokeWeight: 2
            }
            //同 RangingTool 的 自定义 设置,缺省为默认样式
          });
    }

    //  停止测距
    stop() {
		mouseTool.close(true)//关闭,并清除覆盖物
	}

测量面积

测量面积和测距类似。

	// 开始测面积
	start() {
		mouseTool.measureArea({
          strokeColor: '#80d8ff',
          fillColor: '#80d8ff',
          fillOpacity: 0.3
       });
	}

	// 停止测面积
	stop() {
		mouseTool.close(true)//关闭,并清除覆盖物
	}

很简单吧!

行政区划查询渲染

这个也很简单哈宝宝们!

首先也是走接口去获取行政区划的范围啊。

需要用到这个插件AMap.DistrictSearch,和测距一样在index.html中引入一下。

然后在初始化地图完成的时候实例化一下。

   // 搜索行政区
   district = new AMap.DistrictSearch(opts);

首先写一个输入框,用来输入查询的行政区划的名称,比如输入“北京”,然后点击按钮走下面的方法来查询北京行政区划的范围信息。

	  // 行政区划搜索
      seachArea() {
        if (this.areaInput === "") {
          map.remove(areaPolygons)//清除上次结果
          return;
        }
        district.search(this.areaInput, (status, result) => {
          map.remove(areaPolygons)//清除上次结果
          areaPolygons = [];
          var bounds = result.districtList[0].boundaries;
          if (bounds) {
            for (var i = 0, l = bounds.length; i < l; i++) {
              //生成行政区划polygon
              var polygon = new AMap.Polygon({
                strokeWeight: 3,
                path: bounds[i],
                fillOpacity: 0,
                fillColor: '#80d8ff',
                strokeColor: 'red'
              });
              areaPolygons.push(polygon);
            }
          }
          map.add(areaPolygons)
          map.setFitView(areaPolygons);//视口自适应
        });
      },

关键字搜索

这个其实和行政区划查询差不多。

首先呢,需要在地图初始化完成之后呢,创建一个关键字查询的实例。

		// 关键字搜索
        AMap.plugin(["AMap.PlaceSearch"], () => {
          //构造地点查询类
          placeSearch = new AMap.PlaceSearch({
            pageSize: 50, // 单页显示结果条数
            pageIndex: 1, // 页码
            autoFitView: false // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
          });
        });

这个还有其他的参数,可根据官方文档自己判断挑选使用呀!

有一个输入框,输入要查询的关键字,然后一个按钮来走接口查询相关的关键字。然后会返回给你一个列表包含着关键字搜索回来的数据。

	searchKeyWord() {
	   placeSearch.search("北京", (state, data) => {
          this.total = 0
          let dataList = data
          switch (dataList.info) {
            case 'OK':
              console.log("-------->", dataList.poiList.pois)
              break;
            case 'TIP_CITIES':
              console.log("-------->", dataList.cityList)
              break;
          }
        });
	}

上边 如果 info 为 OK,标识返回的是地点列表,如果是 TIP_CITIES,标识返回的是在下面这些城市里面有关于搜索关键字的相关数据。

比如搜索北京,返回地点列表。

比如搜索“动物园”,返回相关城市列表。

鼠标绘制区域

这个简单,就是点击一个按钮开始绘制多边形。

	  // 绘制区域
      startPolygon() {
        polyTool = new AMap.MouseTool(map);
        polyTool.polygon({
          strokeColor: "#1791fc",
          strokeOpacity: 1,
          strokeWeight: 1,
          fillColor: '#1791fc',
          fillOpacity: 0.4,
          strokeStyle: "solid",
          extData: {
            id: '123'
          }
        })
        polyTool.on('draw', (event) => {
          let poly = event.obj   // 绘制完多边形实力对象
          console.log('绘制图形顶点信息列表--------> ', poly.getOptions())
          console.log('绘制图形的自定义属性--------> ', poly.getOptions().path)
          polyTool.close()
          polyTool = null
        })
      },

完成了兄弟们!

总结

到此这篇关于Vue接入高德地图的文章就介绍到这了,更多相关Vue接入高德地图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue使用高德地图根据坐标定位点的实现代码

    前言 项目中需要根据坐标定位,将自己的实现过程写下来,废话不多说,上代码 正文 <script> var map,marker; export default { data(){ return{ arriveCoor:[108.947025,34.2613255],//坐标点 arrive:"",//位置信息 } }, mounted() { mapDraw(this.arriveCoor), mapCoor(this.arriveCoor) }, methods:{ ma

  • 在vue项目中引入高德地图及其UI组件的方法

    引入高德地图: 打开index.html,引用高德地图的JavaScript API: <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=你的API key"></script> 在"key="这里添加你申请的key,key不需要加引号. 引入高德地图UI组件,只需要在上面代码后面再加一串代码: <script

  • vue高德地图之玩转周边

    前言:在之前的博客中,有成功引入高德地图,这是以前的地址  vue 调用高德地图. 因为一些需求,需要使用到地图的周边功能. 完整的项目代码请查看  我的github 一 .先看要实现的结果,参考了链家的周边,如图所示.  二 .原理分析 1.引入高德api,这个在之前的博客提到过,vue 调用高德地图. 2.使用地图的周边插件,这是  高德网站的api. AMap.PlaceSearch //地点搜索服务插件,提供某一特定地区的位置查询服务 在插件中的各种方法中选取了searchNearBy的

  • 在vue中高德地图引入和轨迹的绘制的实现

    高德地图引入和轨迹的绘制 1.第一步 vue中使用cdn引入高德地图,并在main.js中进行全局配置.(百度上有高德地图引入与配置方法,这里就不详细介绍): 1) npm install vue-amap --save 2) import VueAMap from 'vue-amap' Vue.use(VueAMap); VueAMap.initAMapApiLoader({ key: '********************',//自己在高德地图平台上的key值 plugin: ['AMa

  • VUE项目调用高德地图的详细步骤

    目录 前言 申请高德key 技术选型 准备工作 项目中应用 刷新页面,地图加载偶尔失败 在绑定插件的时候,控制台报错 a[d].split is not a function 原生调用高德API 混合使用(vue-amap与原生API混合使用) 总结 参考链接 前言 相信大家或多或少都接触过在大屏的项目,在大屏项目中除了用到了echarts中的行政地图,街道地图也是很常见的,今天主要来说一下在vue中调用高德地图遇到的一些问题

  • vue-cli中使用高德地图的方法示例

    第一步 去高德地图开放平台申请密钥  高德地图开放平台 第二部 在vue-cli项目目录结构 里面多了config文件夹和 utils文件夹 config.js里面是这样的  主要是导出密钥 // 高德地图 key export const MapKey = '你的密钥key' // 地图限定城市 export const MapCityName = '武汉' utils文件夹里面 新建路一个remoteLoad.js 主要是动态创建script标签 封装了一个函数 传入URL地址() expo

  • vue调用高德地图实例代码

    一. vue-amap,一个基于 Vue 2.x 和高德地图的地图组件 https://elemefe.github.io/vue-amap/#/ 这个就不细说了,按照其文档,就能够安装下来. 二. 按照官方提供的方法引入 1.修改webpac.base.conf.js文件 externals: { 'AMap': 'AMap' } 2.引入sdk 引入有两种方式,一种是页面直接引入 复制代码 代码如下: <script type="text/javascript" src=&q

  • 前端vue如何使用高德地图

    首先,注册Key 1.注册开发者账号,成为高德开放平台开发者 2.登陆之后,在进入「应用管理」 页面「创建新应用」 3.为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」 然后,书写代码 在vuecli  public文件夹中的index.html添加导入 JS API 的入口脚本标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8

  • Vue接入高德地图的完整实例

    目录 前言 参考资料 Vue接入高德地图 引用 使用 实现点击按钮缩放功能 地图放大 地图缩小 测量距离 测量面积 行政区划查询渲染 关键字搜索 鼠标绘制区域 总结 前言 Vue 使用高德地图,实现缩放,鼠标绘制,测距.测面积.行政区域范围绘制.关键词查询等操作. 参考资料 高德地图API官网:https://lbs.amap.com/ 高德地图2.0参考手册:https://lbs.amap.com/api/jsapi-v2/documentation#pixel 高德地图2.0示例代码:ht

  • vue接入高德地图绘制扇形效果的案例详解

    目录 vue接入高德地图绘制扇形 需求 预想效果 代码实现 绘制基站第一步 绘制基站第二步 - 计算扇形形状 计算扇形坐标 扇区点击事件 原点点击事件 vue接入高德地图绘制扇形 为什么又写这一篇呢,主要是因为这个功能高德不支持,只能自己实现,但是呢,我估计很多人会用到这玩意儿.所以说呢,就简单的实现一下,如果有需要的话直接超过去就行,之前写过天地图绘制扇形区域的,如果使用天地图的话可以翻一下我之前的博客,百度地图和这个方法类似,可能就是使用的类不同,这样的话只要原理流程理解的差不多,直接把各个

  • vue.js高德地图实现热点图代码实例

    1.在index.html引入高德地图JSAPI <script src="https://webapi.amap.com/maps?v=1.3&key=xxx"></script> 2.地图dom <div class="map-container"> <div id="container" style="width:100%;height:500px"></di

  • vue使用高德地图实现实时定位天气预报功能

    目录 JSAPI 的加载 使用 JSAPI Loader (推荐) JSAPI key和安全密钥的使用 项目代码步骤: 1.在index.html页面body中添加密钥 2.安装@amap/amap-jsapi-loader 使用 3.实现代码: 实现效果: 需求:根据定位功能,使用高德地图实现定位当前城市的天气预报功能. JSAPI 的加载 JS API 2.0 版本提供了两种方案引入地图 JSAPI: 1. 使用官网提供的 JSAPI Loader 进行加载: 2. 以常规 JavaScri

  • vue使用高德地图点击下钻上浮效果的实现思路

    这里给使用高德地图下钻提供一个思路 先讲下我的思路,高德地图api有一个地图绘制区域,你只要提供区码,就可以绘制该区域.以浙江省为例,我一开给浙江省的区码就可以绘制出浙江省的区域,接下来我要进入杭州市,当我点击杭州市的时候我先清空地图上的覆盖层并且能获取到'杭州市'这个字符串,通过对比这个字符串我就可以给出杭州市的区码,最后绘制出杭州市的覆盖层. 接下来看代码: 第一步 绘制地图: //创建地图 this.map = new AMap.Map("container", { cursor

  • Vue开发高德地图应用的最佳实践

    目录 前言 异步加载 封装组件 使用组件 自定义界面最佳实践 总结 前言 之前做不过不少关于地图交互的产品系统,目前国内主流的地图应用 SDK 只有几家:高德.百度和腾讯.所以个人觉得在 PC 应用上高德地图开发相对好一些,至少体验起来没有很明显的坑.这篇文章算是总结下开发地图应用总结吧. 异步加载 因为使用 js sdk 应用,脚本文件本身体积很大,所以要注意下加载的白屏时间,解决用户体验问题,目前绝大部分产品应用都是 SPA 单页面应用系统,所以我封装一个异步加载的方法: const loa

  • Vue使用高德地图实现城市定位

    本文实例为大家分享了Vue使用高德地图实现城市定位的具体代码,供大家参考,具体内容如下 一 前端选择框点击跳转至地图选址页面 <van-row class="address_item"> <van-col span="6" class="item-title">收货地址</van-col> <van-col span="18"> <p class="item&qu

  • Vue引入高德地图并触发实现多个标点的示例详解

    目录 1. 在public下的index.html中引入地图 2.引入组件设置宽高100% 3.数组形式数据固定(一) 4.用ajax请求后端真是接口(二) 5.其他需求请看文档请看官方文档 1. 在public下的index.html中引入地图 <link rel="stylesheet" href="https://cache.amap.com/lbs/static/main1119.css" rel="external nofollow&quo

  • Vue引入高德地图实现流程分步讲解

    目录 一.功能需求 二.准备 三.在webstorm中安装 四.防止在使用中AMap无法识别问 五.正式开发 六.步骤总结 七.效果 一.功能需求 1.根据输入内容进行模糊查询,选择地址后在地图上插上标记,并更新经纬度坐标显示 2.在地图点击后,根据回传的左边更新地址信息和坐标显示 二.准备 1.申请高德地图账号,创建应用 2.在应用管理中 获得key 和安全密钥 三.在webstorm中安装 npm i @amap/amap-jsapi-loader -S 四.防止在使用中AMap无法识别问

  • Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)

    最近项目要使用高德地图写了一个实时公交的应用,这边分享一个小应用主要熟悉下高德地图在vue中的使用,常用api,vue的常用指令 先给大家看下页面效果: 如果有需要源码的童鞋请移步我的github地址 vue搭建实时公交 (欢迎star) 实现思路 在vue项目中导入高德地图 具体功能调用相应高德js APi 1.在vue项目中导入高德地图 1.修改webpac.base.conf.js文件 externals: { 'AMap': 'AMap' } 2.引入sdk 引入有两种方式,一种是在in

随机推荐