nuxt+高德地图实现多边形区域检索
我已经放弃百度地图了,为什么呢?
原因一: 百度地图api太乱不容易查阅
原因二: 百度给出的案例太少,可参考项太少
第三点也是最重要的,百度地图花钱,百度地图花钱,百度地图花钱,
很荣幸,作为国内唯一免费开源大型好用的高德地图成为我的第二个采坑对象。
说说我为什么用nuxt:其实出于私心,我想调研一下nuxt的seo,踩踩nuxt的坑,熟悉一些框架工作流程,以便于后续项目开发;
还有一点是我想把地图抽离出来,来满足公司的各种业务。
好吧,进入正题:
首先,安装nuxt框架:
npx create-nuxt-app gaode-map
安装时会有一些选项,我是如下选择的:

接着安装一些需要的依赖,scss和axios:
sass安装
npm i scss-loader node-scss --save-dev
然后可以在assets下建一个scss文件,如下:

然后在nuxt.config.js引入该文件:

这样就能用scss了,把所有的scss文件导入到index.scss文件中
axios导入:
官方给了方法

那如何通过自定义配置axios呢?在plugins新建axios.js文件,写入如下代码:
import Vue from 'vue'
import axios from 'axios' //中间可以写配置项 Vue.prototype.$axios = axios
然后你应该懂得了
更改服务端口号:
在nuxt.config.js添加如下配置:
server: {
port: , // default: 3000
host: '0.0.0.0', // default: localhost,
}
接下来来步入正题,导入高德地图
这个有很多种方式,这里介绍两种:
1,全局导入,在nuxt.config.js 里加script标签,将路径和key放在后边(注意要写在head对象里边,类似原生结构)
script: [
{src: "https://webapi.amap.com/maps?v=1.4.15&key=your key"}
]
2.我采用的是这种方式,异步加载地图,除此之外,这种的好处是可以分块加载。我是在plugins目录下新建一个js文件,就叫aMap.js吧,然后写一个类,作为地图的注册
export default function MapLoader() {
return new Promise((resolve, reject) => {
// 全局对象如果存在地图直接将结果抛出
if (window.AMap) {
resolve(window.AMap)
} else {
// 创建script标签并放入cdn链接
var script = document.createElement('script')
script.type = 'text/javascript'
script.async = true
script.src = 'http://webapi.amap.com/maps?v=1.3&key=your key&callback=initAMap'
script.onerror = reject
document.head.appendChild(script)
}
window.initAMap = () => {
// 注入相关插件
window.AMap.plugin(['AMap.ToolBar', 'AMap.CircleEditor', 'AMap.PolyEditor'], function () {
//异步同时加载多个插件
var toolbar = new AMap.ToolBar();
map.addControl(toolbar);
});
// 将结果抛出
resolve(window.AMap)
}
})
}
然后就可以在组件中调用该类了:
import MapLoader from "@/plugins/aMap.js";
接下来开始搭建地图页面,先来说一下思路,前端负责调用地图组件,画不规则图形,把图形上的点的经纬度给后端,后端查询出该区域里所有的小区返回给前端,这里先接受前端拿到多边形的点经纬度
前端在初始化地图后,在地图里实例化多边形的函数添加到地图,然后点击按钮触发编辑多边形事件,大致代码如下
<template>
<div class="index">
<div>
<el-button class="btn" @click="polyEditor.open()" style="margin-bottom: 5px">开始编辑</el-button>
<el-button class="btn" @click="polyEditor.close()">结束编辑</el-button>
</div>
<div class="main">
<div class="store-list">
<h3>选中的坐标</h3>
<div v-for="(item, index) in alreadeArr" :key=index>
{{item}}
</div>
</div>
<div id="container"></div>
</div>
</div>
</template> <script>
import MapLoader from "@/plugins/aMap.js";
export default {
data() {
return {
num: ,
polyEditor: {},
alreadeArr: []
};
},
mounted() {
let that = this;
MapLoader().then(AMap => {
that.map = new AMap.Map("container", {
center: [118.02, 39.63],
zoom:
}); var path = [
[118.134005, 39.6339],
[118.130915, 39.629607],
[118.122575, 39.630397],
[118.132575, 39.640397]
] var polygon = new AMap.Polygon({
path: path,
strokeColor: "#FF33FF",
strokeWeight: ,
strokeOpacity: 0.2,
fillOpacity: 0.4,
fillColor: '#1791fc',
zIndex: ,
}) that.map.add(polygon)
// 缩放地图到合适的视野级别
that.map.setFitView([ polygon ]) that.polyEditor = new AMap.PolyEditor(that.map, polygon)
// 拖拽点后触发
that.polyEditor.on('adjust', function(event) {
let arr = []
let point = polygon.getPath()
point.forEach(el => {
arr.push({"lat": el.lat, "lon": el.lng})
})
that.alreadeArr = arr
console.log('选中的区域',arr)
// event.target 即为编辑后的多边形对象
}) });
},
methods: { }
};
</script> <style>
* {
margin: ;
padding: ;
}
#container {
width: 1400px;
height: 900px;
margin: auto;
box-shadow: 10px #ccc;
}
</style>
效果如下:

可以看出前端已经拿到了点坐标(后续功能持续更新)
nuxt+高德地图实现多边形区域检索的更多相关文章
- 【高德地图API】从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物
原文:[高德地图API]从零开始学高德JS API(三)覆盖物——标注|折线|多边形|信息窗口|聚合marker|麻点图|图片覆盖物 摘要:覆盖物,是一张地图的灵魂.有覆盖物的地图,才是完整的地图.在 ...
- Nuxt使用高德地图
事先准备 注册账号并申请Key 1. 首先,注册开发者账号,成为高德开放平台开发者 2. 登陆之后,在进入「应用管理」 页面「创建新应用」 3. 为应用添加 Key,「服务平台」一项请选择「 Web ...
- 【高德地图API】汇润做爱地图技术大揭秘
原文:[高德地图API]汇润做爱地图技术大揭秘 昨日收到了高德地图微信公众号的消息推送,说有[一大波免费情趣用品正在袭来],点进去看了一眼,说一个电商公司(估计是卖情趣用品的)用高德云图制作了一张可以 ...
- 【高德地图API】如何获得行政区域?如何制作行政规划图?
原文:[高德地图API]如何获得行政区域?如何制作行政规划图? 什么是行政规划图?如何获得每个行政区域的边界轮廓图?举例:重庆市 江北区.如图: 官方类参考:http://developer.amap ...
- 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索
原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...
- 【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨
原文:[高德地图API]从零开始学高德JS API(二)地图控件与插件——测距.圆形编辑器.鼠标工具.地图类型切换.鹰眼鱼骨 摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装 ...
- iOS高德地图让指定区域或者点显示在屏幕中间
对于高德地图也是一个新手,很多功能看文档,问技术 或者高德群里讨论 群号:204668425 在我们需求中绘制的有 圆 折线 不规则图形 方式,打开地图指定的绘制图形置于屏幕中间 1.首先创建一个数 ...
- 百度&高德地图小区景点边界轮廓实现
经常的我们在使用地图功能时,会发现在选择一个小区或者一个热门景点的时候,地图上面会给出其边界轮廓,能够方便我们知道其范围大小,有时候在我们使用地图组件的时候,也会面临着类似的需求.比如在地图上面标识出 ...
- iOS高德地图使用-搜索,路径规划
项目中想加入地图功能,使用高德地图第三方,想要实现确定一个位置,搜索路线并且显示的方法.耗了一番功夫,总算实现了. 效果 WeChat_1462507820.jpeg 一.配置工作 1.申请key 访 ...
随机推荐
- MySQL--16 MHA修复
目录 一.恢复MHA 二.MHA切换 三.配置VIP漂移 一.恢复MHA #1.修复旧主库 [root@db01 ~]# /etc/init.d/mysqld start #2.在mha日志中找到ch ...
- 【学术篇】bzoj2440 [中山市选2011]完全平方数
-题目の传送门- 题目大意: 找到第k个无平方因子数. 看到数据范围很大, 我们要采用比\(O(n)\)还要小的做法. 考虑如果前\(x\)个数中有\(k-1\)个无平方因子数, 而前\(x+1\)个 ...
- BZOJ3926 诸神眷顾的幻想乡
传送门 树上SAM! 显然如果树上一条一条字符串放的话那么是n^2的w 但是 题目的性质非常吼啊! 20个叶子节点 我们就可以 把所有叶子结点拎出来当根 全部扔到一个SAM里 就吼啦 最后的答案是 ...
- SOA架构是什么?
https://blog.csdn.net/u013343616/article/details/79460398 SOA是什么?SOA全英文是Service-Oriented Architectur ...
- asp.net core web api 版本控控制
通过微软的一个库Microsoft.AspNetCore.Mvc.Versioning实现asp.net core web api的版本控制. 以两种形式组织了Controller: 文件夹分开 命名 ...
- linux学习-用户组与权限管理
一.用户与组 1.用户 管理员:root,UID为0 普通用户:1-60000 自动分配 系统用户:1-499,1-999(Centos7),对守护进程分配获取资源进行权限分配 登录用户:500+,1 ...
- Python 中内建属性 __getattribute__
参考自:https://blog.csdn.net/yitiaodashu/article/details/78974596 __getattribute__是属性访问拦截器,就是当这个类的属性被访问 ...
- HDU 6090 Rikka with Graph —— 2017 Multi-University Training 5
Rikka with Graph Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- Tortoise git账号记住密码
方法一: 本地git仓库目录下,找到 .git/config ,然后打开增加: [credential] helper = store 这样只有该目录下的git操作不用每次输入用户名和密码,换一个目录 ...
- 华为交换机telnet配置
1.在路由器上和交换机相连的借口上配置一个IP地址:比如192.168.1.1 24 2.在交换机上配置如下:<switch>system-view[switch]vlan 10[swit ...