首先在index.html引入高德地图的js

<script src="https://webapi.amap.com/maps?v=1.4.14&key=你的key"></script>

然后写html部分

<template>
<div class="mymapM">
<!--捜索-->
<div v-if="loading" class="loading">
<van-loading type="spinner" />
</div> <div class="search-box">
<div class="search-postion">
<span class="buts">返回</span>
<input type="text" placeholder="输入关键字搜索" v-model="search_key" />
<span class="clear" v-if="search_key" @click="search_key ='' ">
<van-icon color="#8f8f8f" name="clear" />
</span>
<span class="buts border_but" @click="keySearch()">捜索</span>
</div>
</div>
<div class="con-box con-map" v-if="!search_key">
<!--地图-->
<div class="mapbox">
<div class="map" id="container"></div>
<div class="sign"></div>
</div>
</div>
<div class="con-box" v-if="!search_key">
<!--地址列表-->
<div class="Hlist-box">
<ul>
<li v-for="(item, index) in lists" :key="index" @click="onAddressLi(item)">
<b>
<van-icon color="#a6a6a6" name="clock" />
</b>
<div>
<span>{{item.name}}</span>
<p>{{item.address}}</p>
</div>
</li>
</ul>
</div>
</div>
<!--捜索列表-->
<div class="search-list" v-if="search_key">
<ul>
<li v-for="(item, index) in search_list" :key="index" @click="onSearchLi(item.location)">
<span>{{item.name}}</span>
<p>{{item.address}}</p>
</li>
<li v-if="noSearchShow">
<p>暂无搜索结果</p>
</li>
</ul>
</div>
</div>
</template>

css部分

<style lang="scss" scoped>
.con-map {
height: 190px;
width: 100%;
}
.con-box {
.mapbox {
margin-bottom: 10px;
position: fixed;
z-index:;
width: 100%;
height: 180px;
padding: 10px 0;
background: #eceeee; .map {
width: 100%;
height: 180px;
}
} .Hlist-box {
width: 96%;
margin: 0 auto; background: #fff;
border-radius: 5px;
li {
height: 40px;
padding: 14px 22px;
border-bottom: 1px solid #d9d9d9;
display: flex;
b {
display: inline-block; i {
margin: 18px 18px 0 0;
}
}
div {
width: 100%;
}
span {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 15px;
display: inline-block;
width: 90%;
}
p {
margin-top: 10px;
color: #a6a6a6;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 13px;
width: 90%;
}
}
}
}
.mymapM {
.search-box {
height: 48px; line-height: 48px;
background: #fff; border-bottom: 1px solid #bfbec4; .search-postion {
height: 48px;
line-height: 48px;
background: #fff;
border-bottom: 1px solid #bfbec4;
width: 100%;
position: fixed;
z-index:;
display: flex;
input {
flex:;
height: 14px;
padding: 16px 0;
border: none; text-indent: 10px;
}
.clear {
margin: 2px 6px;
}
.buts {
width: 15%;
text-align: center;
display: inline-block;
flex:;
}
.border_but {
border-left: 1px solid #8f8f8f;
height: 14px;
line-height: 14px;
margin: 17px 0;
}
}
}
.search-list {
width: 96%;
margin: 0 auto;
margin-top: 10px;
border-radius: 5px;
background: #fff;
li {
height: 40px;
padding: 14px 22px;
border-bottom: 1px solid #d9d9d9;
span {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 15px;
display: inline-block;
width: 90%;
}
p {
margin-top: 10px;
color: #a6a6a6;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 13px;
width: 90%;
}
}
}
}
.loading {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index:;
}
</style>

js部分

<script>
export default {
data() {
return {
center: [116.42792, 39.902896], //经度+纬度
search_key: "", //搜索值
lists: [], //地点列表
search_list: [], //搜索结果列表
marker: "",
loading: false,
noSearchShow: false //无搜索结果提示,无搜索结果时会显示暂无搜索结果
};
},
mounted() {
setTimeout(() => {
this.adMap();
}, 1000);
},
methods: {
adMap() {
this.loading = true;
//初始化地图
var map = new AMap.Map("container", {
zoom: 14, //缩放级别
center: this.center //设置地图中心点
//resizeEnable: true, //地图初始化加载定位到当前城市
});
//获取初始中心点并赋值
var currentCenter = map.getCenter(); //此方法是获取当前地图的中心点
this.center = [currentCenter.lng, currentCenter.lat]; //将获取到的中心点的纬度经度赋值给data的center
console.log(this.center); //创建标记
this.marker = new AMap.Marker({
position: new AMap.LngLat(currentCenter.lng, currentCenter.lat) // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
});
// 将创建的点标记添加到已有的地图实例:
map.add(this.marker); //根据地图中心点查附近地点,此方法在下方
this.centerSearch();
//监听地图移动事件,并在移动结束后获取地图中心点并更新地点列表
var moveendFun = e => {
// 获取地图中心点
currentCenter = map.getCenter();
this.center = [currentCenter.lng, currentCenter.lat];
this.marker.setPosition([currentCenter.lng, currentCenter.lat]); //更新标记的位置
//根据地图中心点查附近地点
};
//更新数据
var centerSearch = () => {
this.loading = true;
this.centerSearch();
}; // 绑定事件移动地图事件
map.on("mapmove", moveendFun); //更新标记
map.on("moveend", centerSearch); //更新数据
},
centerSearch() {
AMap.service(["AMap.PlaceSearch"], () => {
//构造地点查询类
var placeSearch = new AMap.PlaceSearch({
type:
"汽车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|金融保险服务|公司企业|地名地址信息", // 兴趣点类别
pageSize: 30, // 单页显示结果条数
pageIndex: 1, // 页码
city: "全国", // 兴趣点城市
autoFitView: false // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
});
//根据地图中心点查附近地点
placeSearch.searchNearBy(
"",
[this.center[0], this.center[1]],
200,
(status, result) => {
if (status == "complete") {
this.lists = result.poiList.pois; //将查询到的地点赋值
this.loading = false;
}
}
);
});
},
keySearch() {
this.loading = true;
AMap.service(["AMap.PlaceSearch"], () => {
//构造地点查询类
var placeSearch = new AMap.PlaceSearch({
type:
"汽车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|金融保险服务|公司企业|地名地址信息", // 兴趣点类别
pageSize: 30, // 单页显示结果条数
pageIndex: 1, // 页码
city: "全国", // 兴趣点城市
citylimit: false, //是否强制限制在设置的城市内搜索
autoFitView: false // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围
});
//关键字查询
placeSearch.search(this.search_key, (status, result) => {
if (status == "complete") {
if (result.poiList.count === 0) {
this.noSearchShow = true;
} else {
this.search_list = result.poiList.pois; //将查询到的地点赋值
this.noSearchShow = false;
this.loading = false;
}
} else {
this.search_list = [];
this.noSearchShow = true;
}
});
});
},
onAddressLi(e) {
console.log(e);
this.marker.setPosition([e.location.lng, e.location.lat]); //更新标记的位置
},
onSearchLi(e) {
console.log(e.lng + "-" + e.lat);
this.center = [e.lng, e.lat];
console.log(this.center);
this.search_key = "";
// this.loading=true;
setTimeout(() => {
this.adMap();
}, 1000);
}
},
watch: {
search_key(newv, oldv) {
if (newv == "") {
this.search_list = [];
this.noSearchShow = false;
setTimeout(() => {
this.adMap();
}, 1000);
}
}
}
};
</script>

效果图

vue+vant ui+高德地图的选址组件的更多相关文章

  1. VUE 2.0 引入高德地图,自行封装组件

    1. 高德地图官网 申请帐号, 申请相应(JavaScript API)的 Key 2. 在项目中引入, 这里和其他的引入不同的是 直接在 index.html, 不是在 main.js 引入, 博主 ...

  2. VUE 高德地图选取地址组件开发

    高德地图文档地址 http://lbs.amap.com/api/lightmap/guide/picker/ 结合步骤: 1.通过iframe内嵌引入高德地图组件 key就选你自己申请的key &l ...

  3. 基于vue 2.X和高德地图的vue-amap组件获取经纬度

    今天我就讲了一下怎么通过vue和高德地图开发的vue-amap组件来获取经纬度. 这是vue-amap的官网文档:https://elemefe.github.io/vue-amap/#/ 这是我的码 ...

  4. 在vue中使用高德地图vue-amap

    1.安装 vue-amap我安装指定版本0.5.10的版本 npm i --save vue-amap@0.5.10 2.main.js中的配置 key申请地址教程:https://lbs.amap. ...

  5. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

  6. 在vue中使用高德地图开发,以及AMap的引入?

    百度引入BMap ,一个import 即可,可AMap 却报AMap is not difined ? 1.首先在 externals: { "BMap": "BMap& ...

  7. vue.js 使用高德地图

    1.获取key值 注册成为高德开发者需要分三步: 第一步,注册高德开发者: 第二步,去控制台创建应用: 第三步,获取Key 2.修改配置文件  webpack.base.conf.js externa ...

  8. 如何在vue里面调用高德地图

    1.修改webpac.base.conf.js文件 与module同一级添加 externals: { 'AMap': 'AMap', 'AMapUI': 'AMapUI' }配置. 然后在index ...

  9. vue 里面引入高德地图

    效果图: 实现: 一:引入 高德,web-sdk (两种方式) 1:在html 中引入(我用的这一种) <script type="text/javascript" src= ...

随机推荐

  1. vue-router动态路由控制

    一.注册使用vue-router import Vue from 'vue' import Router from 'vue-router' Vue.use(Router); 二.编写动态路由注册函数 ...

  2. Linux查看温度

    step 1: centos $ sudo yum install lm_sensors ubuntu $ sudo apt-get install lm_sensors step2$ sudo se ...

  3. ASP.NET MVC生命周期与管道模型

      先来熟悉下asp.net请求管道 1.当客户端发送http://localhost:80/home/index请求时 2.首先到达服务端的内核模块HTTP.SYS(它监听80端口),通过访问注册表 ...

  4. Umount- Linux必学的60个命令

    1.作用 umount命令的作用是卸载一个文件系统,它的使用权限是超级用户或/etc/fstab中允许的使用者. 2.格式 unmount -a [-fFnrsvw] [-t vfstype] [-n ...

  5. HZOI20190906模拟39 工业,卡常,玄学

    题面:https://www.cnblogs.com/Juve/articles/11484209.html 工业: 推一个式子,AC 没有用组合数....推了2个多小时 我sbsbsbsbsbsbs ...

  6. LUOGU P3157 [CQOI2011]动态逆序对(CDQ 分治)

    传送门 解题思路 cdq分治,将位置看做一维,修改时间看做一维,权值看做一维,然后就转化成了三维偏序,用排序+cdq+树状数组.注意算删除贡献时要做两次cdq,分别算对前面和后面的贡献. #inclu ...

  7. css 实现单行以及多行文本溢出显示省略号

    如果实现单行文本的溢出显示省略号大家都知道用text-overflow:ellipsis属性来,当然还需要加上宽度width属性. 实现方法: ``` overflow: hidden; text-o ...

  8. 【DM8168学习笔记5】EZSDK目录结构

    EZSDK5.02的目录结构与之前的版本不同,之前的版本各个组件都放在/ezsdk目录下,5.02做了整合. 之前版本:(图片摘自:3.DM816x_1-day_Workshop-Getting_St ...

  9. [Day2] Nginx静态文件

    ​上一节我们介绍了nginx的三个使用场景和一些配置语法参数,今天我们就用一章的内容来介绍一下Nginx作为静态资源服务器的配置和常见问题. 一. 简单的静态服务器 ​话不多说,直接上配置代码. se ...

  10. 责任链模式(Chain of Responsibility、Handler)(请求处理建立链)

    (使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止.) 从名字中看出 ,系统中将会存在多个有类似处理能力的对 ...