vue项目调用高德地图vue-amap 插件 的AMap.PlaceSearch简用
结合 elementui 的 el-input 直接下拉选取地点 不展示地图
【高德地图|vue项目中调用高德地图vue-amap 插件 的AMap.PlaceSearch简用】
文章图片
1.下载 npm install vue-amap --save
2.直接在mian.js
import AMap from 'vue-amap';
Vue.use(AMap);
// 初始化vue-amap
AMap.initAMapApiLoader({
// 高德key
key: '自己的高德key',
// 插件集合 (插件按需引入)
plugin: ['AMap.Geolocation', 'AMap.PlaceSearch', 'AMap.ToolBar', 'AMap.Geocoder']
});
3.组件页面代码
>
export default {
name: 'mapDetail',
data () {
return {
// 地图map对象
map: undefined,
// 组件
autoCompleteComponent: undefined,
placeSearchComponent: undefined,// 样式
conheight: {
height: '600px',
width: ''
},
// marker点集合
markerList: [],
mapInput: '',
inputSearchVal: '',};
},
// created(){
//window.addEventListener('resize', this.handleResize);
// },
// beforeDestroy: function () {
//window.removeEventListener('resize', this.handleResize);
// },
// computed: {
//rightWidth(){
//let leftWidth = this.isCollapse ? '64' : '200';
//console.log(this.conheight.width);
//return (this.conheight.width-leftWidth)+'px';
//}
// },
mounted () {
this.init();
// this.addMarker();
this.mapSearchInit();
},
methods: {/** 初始化map对象 */
init: function () {
let map = new AMap.Map('container', {
center: [116.397428, 39.90923],
resizeEnable: true,
zoom: 15,
lang: 'cn'
});
AMap.plugin(['AMap.ToolBar', 'AMap.Scale'], function () {
map.addControl(new AMap.ToolBar());
map.addControl(new AMap.Scale());
});
this.map = map;
},
/** 初始化搜索工具 */
mapSearchInit(){
let that = this;
// 绑定自动提示
AMap.plugin(['AMap.Autocomplete', 'AMap.PlaceSearch'], function(){
var autoOptions = {
input: 'tipInput',
city: '北京',
};
var autoCompleteComponent= new AMap.Autocomplete(autoOptions);
// 监听选中项
AMap.event.addListener(autoCompleteComponent, 'select', function(data){
console.log(data);
if ( data.poi.location != undefined){
//定位到中心点
console.log('定位中心点');
that.map.setCenter(data.poi.location);
//TODO 获取数据,对数据进行操作如:添加marker等}});
that.autoCompleteComponent = autoCompleteComponent;
// 注册placeSearch组件
that.placeSearchComponent = new AMap.PlaceSearch({
// city 指定搜索所在城市,支持传入格式有:城市名、citycode和adcode
city: '北京'
});
});
},
/** 关键词搜索 */
searchKeyword(){
this.placeSearchComponent.search(this.inputSearchVal, function (status, result) {
// 查询成功时,result即对应匹配的POI信息
console.log(status);
console.log(result);
});
},
/** 打开marker消息窗体 */
// openInfo(positionResult, pointData) {
//var info = [];
//info.push('');
//info.push('高德软件');
//info.push('电话 : 010-84107000邮编 : 100102
');
//info.push('地址 :北京市朝阳区望京阜荣街10号首开广场4层
');
//let infoWindow = new AMap.InfoWindow({
//content: info.join(''),
//offset: new AMap.Pixel(10, -25)
//});
//infoWindow.open(this.map, positionResult.lnglat);
// },
/** 添加marker */
// addMarker(){
//let that = this;
//var marker = new AMap.Marker({
//position: new AMap.LngLat(116.397428, 39.90923),
//title: '北京',
//extData: { id: '123456' }
//});
////绑定点击事件
//marker.on('click', positionResult => {
//console.log(positionResult);
//let pointData = https://www.it610.com/article/positionResult.target.getExtData();
//that.openInfo( positionResult, pointData);
//});
//this.markerList.push(marker);
//this.map.add(this.markerList);
// },
/** 处理宽 */
// handleResize (event) {
//this.conheight.width = document.documentElement.clientWidth;
//this.conheight.height = document.documentElement.clientHeight;
//console.log(document.documentElement.clientHeight);
// },},
};
>
.search-div {
display: flex;
align-items: center;
width: 300px;
height: 40px;
box-sizing: border-box;
}
使用dialog,搜索出来的结果会在蒙版后面显示,index.html 或者app.vue加样式。代码如下:
.amap-sug-result {
z-index: 99999!important;
}
推荐阅读
- Vue|高德地图在 vue 项目中的使用
- vue|前端使用echarts实现数据可视化大屏展示
- 毕业设计|SpringBoot+Vue项目旅游信息推荐系统【源码开源】
- 前端|推荐20个值得收藏的前端开源项目
- 前端|前端面试八股文个人汇总--普通知识篇(持续补充)
- vue|微信小程序中的web-view,实现微信小程序与h5页面间跳转
- axios|vue项目 使用axios封装request请求(一)
- Vue|前端权限设计实现——按钮级
- Java|权限系统控制到按钮级别开源推荐 Spring Boot-Shiro-Vue