VUE3 使用百度地图 【点击获取对应坐标】

目录

文档

编码

第一步 申请api秘钥

第二步 引入

 第三步 创建组件

第四步 使用组件

效果图:


文档

百度地图官方文档

https://lbsyun.baidu.com/index.php?title=jspopularGL/guide/geoloaction

百度地图官方示例

https://lbsyun.baidu.com/jsdemo.htm#aCreateMap

编码

第一步 申请api秘钥

https://lbsyun.baidu.com/index.php?title=jspopular/guide/getkey

第二步 引入

在vue项目的index.html文件中引入

 第三步 创建组件

<script lang="ts">
export default {
  name: `baidu-map`
};
</script>
<script setup lang="ts">
import { getCurrentInstance, nextTick, onMounted } from "vue";
const { proxy } = getCurrentInstance();

const props = defineProps({
  x: {
    type: Number,
    default: 113.31071
  },
  y: {
    type: Number,
    default: 23.14828
  }
});

onMounted(() => {
  nextTick(() => {
    init();
  });
});

const init = async () => {
  const BMap = window.BMap;
  //显示级别,如省市区街,0-20
  let showLevel = 10;

  const map = new BMap.Map("baidu-map");
  //地图中心点,默认广州市
  let point = new BMap.Point(113.31071, 23.14828);
  // 初始化图标
  let Icon_0 = new BMap.Icon(
    "/src/assets/svg/punctuation.svg",
    new BMap.Size(64, 64),
    {anchor: new BMap.Size(18, 32), imageSize: new BMap.Size(36, 36)}
  );

  //已有坐标,则根据已有坐标显示定位图标
  if(props.x && props.y){
    point = new BMap.Point(props.x, props.y);
    showLevel = 17;
    //设置初始坐标图标位置
    let myMarker = new BMap.Marker(
      new BMap.Point(props.x, props.y),
      {icon: Icon_0}
    );
    map.addOverlay(myMarker);
  }

  //设置中心坐标,显示级别
  map.centerAndZoom(point, showLevel);
  //获取当前定位
  map.addControl(new BMap.GeolocationControl());
  //开启鼠标滚轮缩放
  map.enableScrollWheelZoom(true);
  // 添加控件
  let opts = {type: "BMAP_NAVIGATION_CONTROL_SMALL"};
  map.addControl(new BMap.NavigationControl(opts));

  //创建点击事件
  map.addEventListener("click", function (e) {

    //向父组件传值
    proxy.$emit("childClick", e.point);
    //清除地图上所有覆盖物
    map.clearOverlays();
    //设置点击后图标显示
    let myMarker = new BMap.Marker(
      new BMap.Point(e.point.lng, e.point.lat),
      {icon: Icon_0}
    );
    map.addOverlay(myMarker);
  });
}
</script>

<template>
  <div>
    <div id="baidu-map" />
  </div>
</template>
<style>
#baidu-map {
  height: calc(70vh - 86px);
}
</style>

第四步 使用组件

效果图:

传递经纬度的效果:

未传递效果:

要实现百度地图坐标反查,可以使用百度地图 JavaScript API。具体实现步骤如下: 1. 在 HTML 文件中引入百度地图 JavaScript API: ```html <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密钥"></script> ``` 其中,您需要将“您的密钥”替换为您在百度地图开放平台申请的密钥。 2. 创建地图容器: ```html <div id="map"></div> ``` 在 JavaScript 文件中,可以使用以下代码创建地图: ```javascript var map = new BMap.Map("map"); // 创建地图实例 var point = new BMap.Point(116.404, 39.915); // 创建点坐标 map.centerAndZoom(point, 15); // 初始化地图,设置中心点和缩放级别 ``` 3. 添加地图控件: ```javascript map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件 map.addControl(new BMap.ScaleControl()); // 添加比例尺控件 map.addControl(new BMap.OverviewMapControl()); // 添加缩略地图控件 map.addControl(new BMap.MapTypeControl()); // 添加地图类型控件 ``` 4. 实现坐标反查功能: ```javascript var geoc = new BMap.Geocoder(); // 创建地址解析器实例 map.addEventListener("click", function(e) { var pt = e.point; // 获取点击的地理坐标 geoc.getLocation(pt, function(rs) { var addComp = rs.addressComponents; // 获取地址组成部分 var address = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber; // 拼接地址 alert(address); // 弹出反查结果 }); }); ``` 上述代码中,通过添加地图的 click 事件监听器,获取用户点击的地理坐标,然后调用地址解析器实例的 getLocation 方法获取坐标对应的地址信息,并拼接成完整的地址字符串,最后弹出反查结果。 以上就是实现百度地图坐标反查的基本步骤。需要注意的是,使用百度地图 JavaScript API 需要申请密钥,并且需要在使用之前引入 API 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值