当前位置:   article > 正文

VUE3 使用百度地图 【点击获取对应坐标】_vue3获取当前地理位置

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文件中引入

 第三步 创建组件

  1. <script lang="ts">
  2. export default {
  3. name: `baidu-map`
  4. };
  5. </script>
  6. <script setup lang="ts">
  7. import { getCurrentInstance, nextTick, onMounted } from "vue";
  8. const { proxy } = getCurrentInstance();
  9. const props = defineProps({
  10. x: {
  11. type: Number,
  12. default: 113.31071
  13. },
  14. y: {
  15. type: Number,
  16. default: 23.14828
  17. }
  18. });
  19. onMounted(() => {
  20. nextTick(() => {
  21. init();
  22. });
  23. });
  24. const init = async () => {
  25. const BMap = window.BMap;
  26. //显示级别,如省市区街,0-20
  27. let showLevel = 10;
  28. const map = new BMap.Map("baidu-map");
  29. //地图中心点,默认广州市
  30. let point = new BMap.Point(113.31071, 23.14828);
  31. // 初始化图标
  32. let Icon_0 = new BMap.Icon(
  33. "/src/assets/svg/punctuation.svg",
  34. new BMap.Size(64, 64),
  35. {anchor: new BMap.Size(18, 32), imageSize: new BMap.Size(36, 36)}
  36. );
  37. //已有坐标,则根据已有坐标显示定位图标
  38. if(props.x && props.y){
  39. point = new BMap.Point(props.x, props.y);
  40. showLevel = 17;
  41. //设置初始坐标图标位置
  42. let myMarker = new BMap.Marker(
  43. new BMap.Point(props.x, props.y),
  44. {icon: Icon_0}
  45. );
  46. map.addOverlay(myMarker);
  47. }
  48. //设置中心坐标,显示级别
  49. map.centerAndZoom(point, showLevel);
  50. //获取当前定位
  51. map.addControl(new BMap.GeolocationControl());
  52. //开启鼠标滚轮缩放
  53. map.enableScrollWheelZoom(true);
  54. // 添加控件
  55. let opts = {type: "BMAP_NAVIGATION_CONTROL_SMALL"};
  56. map.addControl(new BMap.NavigationControl(opts));
  57. //创建点击事件
  58. map.addEventListener("click", function (e) {
  59. //向父组件传值
  60. proxy.$emit("childClick", e.point);
  61. //清除地图上所有覆盖物
  62. map.clearOverlays();
  63. //设置点击后图标显示
  64. let myMarker = new BMap.Marker(
  65. new BMap.Point(e.point.lng, e.point.lat),
  66. {icon: Icon_0}
  67. );
  68. map.addOverlay(myMarker);
  69. });
  70. }
  71. </script>
  72. <template>
  73. <div>
  74. <div id="baidu-map" />
  75. </div>
  76. </template>
  77. <style>
  78. #baidu-map {
  79. height: calc(70vh - 86px);
  80. }
  81. </style>

第四步 使用组件

效果图:

传递经纬度的效果:

未传递效果:

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/109907
推荐阅读
相关标签
  

闽ICP备14008679号