赞
踩
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=`自己在百度地图申请的key值`"></script>
<div class="list"> <div class="title"> <div class="star-icon"> <img src="@/assets/image/star.png" alt="" /> </div> <div class="list-tit">地址</div> </div> <div class="address-box"> <div class="input-box"> <input type="text" placeholder="请输入详细地址" v-model="address" /> </div> <div class="address" @click="obtain()">获取位置</div> </div> </div> <!-- 选择地点 --> <van-popup v-model:show="show" position="bottom"> <div id="allmap"></div> </van-popup>
<script setup> const address = ref(""); //地址 const point = ref({}); //坐标 const addressnotes = ref(""); //地址备注 const show = ref(false); //选择地点弹窗显隐 // 初始化 获取坐标 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition((r) => { point.value = r.point; inits(); //根据获取到的经纬度 获取地点名称(这里是因为 地图返回来的位置名称不具体,返回最小值是 市 所以 进行了 经纬度在此传递 获取街道的操作) console.log(point.value); }); // 打开地图 const obtain = () => { show.value = true; setTimeout(() => { initMap(); //延迟调用渲染地图是因为 电脑上调试的时候 地图加载缓慢 或者加载失败 }, 500); }; // 创建地图且监听拖动 const initMap = () => { let Bmap = window.BMap; let map = new Bmap.Map("allmap"); map.centerAndZoom(new Bmap.Point(point.value.lng, point.value.lat), 15); // 添加中心点 tubiao(Bmap, map); map.enableDragging(); //启用在地图上拖动 map.addEventListener("dragend", function () { var center = map.getCenter(); // Get the new center point point.value.lng = center.lng; point.value.lat = center.lat; tubiao(Bmap, map); inits(Bmap); // console.log(" ", point.value.lng, point.value.lat); }); }; const marker = ref(null); // 图标位置渲染 地图中心点代表自己想要的位置 ; 初始化的时候 为自己的位置 const tubiao = (Bmap, map) => { var myIcon = new BMap.Icon( require("../../assets/image/fixedpoint.png"), new BMap.Size(28, 28) ); if (marker.value) { //位置存在则销毁 坐标点 map.removeOverlay(marker.value); } //添加坐标点位置 图标 marker.value = new BMap.Marker( new Bmap.Point(point.value.lng, point.value.lat), { icon: myIcon, } ); map.addOverlay(marker.value); }; //拖动获取坐标地点位置名称 const inits = (Bmap) => { let geocoder = new BMap.Geocoder(); let points = new BMap.Point(point.value.lng, point.value.lat); geocoder.getLocation(points, function (result) { if (result) { address.value = result.address; } }); }; </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。