首页 > 其他分享 >v3+ts中使用百度地图 附带搜索地址

v3+ts中使用百度地图 附带搜索地址

时间:2023-04-22 10:55:39浏览次数:41  
标签:point 附带 ts value v3 let new mymap myBMap

 话不多说 直接上源码

let addressInfo = reactive({
  longitude: "", // 经度
  latitude: "", // 纬度
  province: "", // 省
  city: "", // 市
  district: "", // 区
  address: "", // 详细地址
});
let openMap = ref(false);

const point: any = ref({});
const ac: any = ref({});
onMounted(async () => {});

let myBMap = ref();
let mymap = ref();
const initMap = () => {
  BMapLoader("C8tEx8DnTWxWDvx0pNpOI6ouKGtA5Ej5").then((BMap) => {
    var map = new BMap.Map("baidu-map-container");
    myBMap.value = BMap;
    mymap.value = new myBMap.value.Map("baidu-map-container", {
      enableMapClick: false,
    });
    mymap.value.disableKeyboard(); // 禁用键盘操作地图
    mymap.value.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
    // 添加中心点和缩放等级,如果不添加,初始化出来页面为白屏
    point.value = new myBMap.value.Point(120.872114, 32.038276);
    mymap.value.centerAndZoom(point.value, 15);
    mymap.value.addEventListener("click", function (e: any) {
      mymap.value.clearOverlays();
      let pt = e.latlng;
      let marker = new myBMap.value.Marker(
        new myBMap.value.Point(pt.lng, pt.lat)
      );
      mymap.value.addOverlay(marker);
      geocAddress(pt);
    });
    ac.value = new myBMap.value.Autocomplete({
      input: "suggestId",
      location: map.value,
    });
    ac.value.addEventListener("onconfirm", function (e: any) {
      mymap.value.clearOverlays(); // 移除地图上的标注
      let local = new myBMap.value.LocalSearch(map, {
        //智能搜索
        onSearchComplete: function (results: any) {
          let poi = results.getPoi(0); //获取第一个智能搜索的结果
          console.log(poi);
          let searchpt = poi.point; // 获取坐标
          mymap.value.centerAndZoom(searchpt, 16);
          mymap.value.addOverlay(new myBMap.value.Marker(searchpt)); //添加标注
          geocAddress(searchpt); // 逆地址解析
        },
      });
      let searchValue = e.item.value;
      local.search(
        searchValue.province +
          searchValue.city +
          searchValue.district +
          searchValue.street +
          searchValue.business
      );
    });
    /** 搜索地址End */
  });
};

const geocAddress = (point: any) => {
  let geoc = new myBMap.value.Geocoder();
  geoc.getLocation(point, function (rs: any) {
    console.log(rs);
    let { address } = rs;
    let { addressComponents } = rs;
    let inPoint = rs.point;
    addressInfo.address = address;
    form.province = addressComponents.province;
    form.city = addressComponents.city;
    form.adress = address;
    form.xadress = point.lng;
    form.yadress = point.lat;
  });
};
const openMapc = () => {
  openMap.value = true;
  initMap();
};

 

标签:point,附带,ts,value,v3,let,new,mymap,myBMap
From: https://www.cnblogs.com/ljlp/p/17342591.html

相关文章

  • 12、Argo rollouts结合Ingress Nginx进行Canary流量迁移
    Argorollouts结合IngressNginx进行Canary流量迁移Istio环境中支持两种流量分割模式◼更新期间,使用不同的Service分别承载新旧版本的流量◆Canary和Stable版本分别对应一个独立的Service⚫canaryService:待发布的新版本⚫stableService:待更新的......
  • 13、Argo Rollouts请求分析和渐进式交付
    请求分析和渐进式交付ArgoRollouts中的分析(Analysis)是用于根据阶段性交付效果的测量结果来推动渐进式交付的机制◼分析机制通过分析模板(AnalysisTemplateCRD)定义,而后在Rollout中调用它◼运行某次特定的交付过程时,ArgoRollouts会将该Rollout调用的AnalysisTemplate实例......
  • vue3+ts使用v-for出现unknown问题
    title:vue3+ts使用v-for出现unknown问题date:2022-12-2719:00:45tags:['Vue','踩坑记录']categories:["前端篇"]最近在写项目时遇到了一个问题,当我从父组件向子组件传数据并且需要将子组件对传入的数据进行v-for循环渲染时,在此出遇到了一个ts报错报错为循环出的data......
  • vue3中使用defineExpose报TS-2339
    title:"vue3+ts使用defineExpose报TS:2339"date:2022-12-2919:32:44tags:["Vue","踩坑记录"]categories:["前端篇"]开头先把错误贴上src/hooks/usePageSearch.ts:9:27TS2339:Property'getPageData'doesnotexistontype&#......
  • TSConfig 全解
    TSConfig配置选项全解TSConfig是TypeScript编译器的配置文件,用于指定TypeScript编译器的行为。TSConfig以JSON格式存储,并且支持许多配置选项,包括编译器选项、文件列表和TSConfig继承等。compilerOptionscompilerOptions是TSConfig中最常用的选项之一,用于指定Typ......
  • Bootstrap Table表格中存放下拉框,读取数据填充到下拉框
    初学Bootstarp,个人感觉一个功能非常强大的前端框架,由于学习的路途也不是一番风顺的,难免会遇到问题,将遇到的问题整理,可以时常看看,加深记忆。最近做表格需要在表格中加入<select>标签,将数据填充到下拉框,无奈搞了好几个小时也没有成功,最后经过请教身边的大佬,得以解决。代码如下:htt......
  • springboot+bootstraptable
    springboot+bootstraptable项目采用的是springboot+bootstraptable搭建的demo  https://blog.csdn.net/weixin_43373818/article/details/114714016基础的增删改查已经实现html页面<!DOCTYPEhtml><htmllang="zh-CN"xmlns:th="http://www.thymeleaf.org"><......
  • bootstraptable单元格可输入(输入框,下拉框)
    https://blog.csdn.net/weixin_45742032/article/details/105145655bootstraptable单元格可输入效果图效果图一(单元格中加入下拉框,这里的数据是从数据库取的) <tableid="payment_detail_table"></table>js内容vartemplateTableParams={classes:"tabletable......
  • MFC-SHGetSpecialFolderPath获取指定的系统路径
     CStringstr;TCHARpath[MAX_PATH];BOOLb=SHGetSpecialFolderPath(NULL,path,CSIDL_PROGRAM_FILES_COMMONX86,0);//获取指定的系统路径/*参数1:HWNDhwndOwner窗口所有者的句柄。可以NULL参数2:LPTSTRlpszPath返回路径的缓冲区,该缓......
  • React+hook+ts+ant design封装一个具有编辑和新增功能的页面
    前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷微信公众号前端小歌谣需求分析在前端项目中最常......