欢迎光临
我们一直在努力

Vue的模态框中实现 根据详细地址定位经纬度

最近在项目中遇到这样一个需求vps云服务器,在新增商品的模态框中,根据拿到的地址在地图上显示具体位置,并把经纬度给后台。

如图,选择供应商之后在2的input框中会显示详细的地址,根据后台返回的详细地址地图上定位到具体的经纬度,并且拿到经纬度。

做这个需求之前先去百度地图获取密钥,在index.html中引入百度地图api

<!–引入百度地图API–> <script type=”text/javascript” src=”http://api.map.baidu.com/api?v=2.0&ak=你的密钥”></script>//内网测试 <!– <script type=”text/javascript” src=”https://api.map.baidu.com/api?v=2.0&ak=你的密钥&s=1″></script> –>//项目上线到域名地址要改为https,并且要加&s=1

这是引入百度api的写法,下面那个是外网的,项目上线到外网的话要加https,并且在密钥后面拼接&s=1

1、首先定义显示的标签容器

<!–地图容器–><div> <div id=”allmap”></div></div>

2、我是在弹框显示的时候先初始化一个地图,手动设置一个经纬度

cellMap(){ var th = this; // 创建Map实例 var map = new BMap.Map(“allmap”); // 初始化地图,设置中心点坐标, var point = new BMap.Point(113.929872,22.581627); // 初始化点坐标 map.centerAndZoom(point, 15); map.enableScrollWheelZoom();},

然后选择供应商之后在供应商选择框的change事件中去回调显示的函数

getMap(address){ // debugger let that = this; var map = new BMap.Map(“allmap”); var localSearch = new BMap.LocalSearch(map); map.clearOverlays();//清空原来的标注 var keyword = this.managementAddress; localSearch.setSearchCompleteCallback(function (searchResult) { var poi = searchResult.getPoi(0); console.log(poi.point.lng); console.log(poi.point.lat); map.centerAndZoom(poi.point, 13); var marker = new BMap.Marker(new BMap.Point(poi.point.lng, poi.point.lat)); // 创建标注 map.addOverlay(marker); that.lng = poi.point.lng; that.lat = poi.point.lat; }); localSearch.search(keyword); },

个人写法,仅供参考

39108571

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。