vue 定位所在地_Vue.js实现百度地图定位、搜索及获取经纬度

本文介绍了如何在Vue.js应用中结合百度地图SDK实现定位、搜索和获取经纬度的功能。首先在HTML中引入百度地图JS文件,然后在Vue组件中创建地图实例,设置标注,添加导航和定位控件。当用户成功定位后,会显示定位信息,并能进行地图上的搜索操作,点击地图获取当前位置的详细地址和经纬度。
摘要由CSDN通过智能技术生成

百度地图官方给出的SDK没有vue版本,我们可以引入百度地图的js,去实现百度地图定位,并实现搜索、以及获取经纬度,其实现方法和纯html+js是一样的,只不过是多了一层vue的方法(methods)。

当打开页面的时候,百度地图自动定位当前位置,给出一个搜索框,搜索我们所想要寻找的目标地址,百度地图会列出相关检索结果,点击检索结果,并在地图上定位,然后获取到经纬度。

1.在 public/index.html 中引入百度地图SDK的JS文件

2.vue 模板文件前端

地址: 经度: 纬度:

3.js 代码,vue methods 方法:

map() {

let t = this;

// 百度地图API功能

var map = new BMap.Map("allmap");

var point = new BMap.Point(t.formData.lng, t.formData.lat);

map.centerAndZoom(point, 18);

var marker = new BMap.Marker(point); // 创建标注

map.addOverlay(marker); // 将标注添加到地图中

marker.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画

// 添加带有定位的导航控件

var navigationControl = new BMap.NavigationControl({

// 靠左上角位置

anchor: BMAP_ANCHOR_TOP_LEFT,

// LARGE类型

type: BMAP_NAVIGATION_CONTROL_LARGE,

// 启用显示定位

enableGeolocation: true

});

map.addControl(navigationControl);

//获取定位

/*var geolocation = new BMap.Geolocation();

geolocation.getCurrentPosition(function(r){

if(this.getStatus() == BMAP_STATUS_SUCCESS){

var mk = new BMap.Marker(r.point);

map.addOverlay(mk);

map.panTo(r.point);

//alert('您的位置:'+r.point.lng+','+r.point.lat);

t.$Notice.success({

title: "您的位置:"+r.point.lng+','+r.point.lat

});

} else {

alert('failed'+this.getStatus());

}

},{enableHighAccuracy: true})*/

//搜索

var local = new BMap.LocalSearch(map, {

renderOptions:{map: map, panel:"r-result"}

});

local.search(t.mapsearch);

// 添加定位控件

var geolocationControl = new BMap.GeolocationControl();

geolocationControl.addEventListener("locationSuccess", function(e){

// 定位成功事件

var address = '';

address += e.addressComponent.province;

address += e.addressComponent.city;

address += e.addressComponent.district;

address += e.addressComponent.street;

address += e.addressComponent.streetNumber;

t.formData.address = address

t.$Notice.success({

title: "当前定位地址为:" + address

});

});

geolocationControl.addEventListener("locationError",function(e){

// 定位失败事件

alert(e.message);

});

map.addControl(geolocationControl);

//点击地图获取经纬度

map.addEventListener("click", function(e){

var myGeo = new BMap.Geocoder();

myGeo.getLocation(new BMap.Point(e.point.lng, e.point.lat), function(res){

let address = '';

/*console.log(res)

if(res.surroundingPois[0] != undefined){

var title = res.surroundingPois[0].title ? res.surroundingPois[0].title : ''

address = res.surroundingPois[0].address+title;

} else{

var title = res.title ? res.title : ''

address = res.address+title;

}*/

var title = res.title ? res.title : ''

t.formData.address = res.address+title;

})

// 经纬度

t.formData.lng = e.point.lng;

t.formData.lat = e.point.lat;

});

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值