百度地图API 教程使用 嵌套到vue3项目中使用,能够定位并且搜索地点名称位置,反向解析获取经度和维度

news2024/11/21 1:46:46

文章目录

  • 目录

    文章目录

    流程

    小结


    • 概要
    • 安装流程
    • 技术细节
    • 小结

概要

注册百度地图成为开发者:

登录百度账号

注册成功开始下一步

百度地图API是百度提供的一组开发接口,用于在自己的应用程序中集成地图功能。通过百度地图API,您可以实现地图展示、地理编码、逆地理编码、路线规划、定位等功能。以下是一些常见的百度地图API功能:

  1. 地图展示:通过百度地图API,您可以在自己的网页或移动应用中嵌入地图,并自定义地图样式、添加覆盖物、标注等功能。

  2. 地理编码和逆地理编码:地理编码是将地址信息转换为经纬度坐标的过程,而逆地理编码则是将经纬度坐标转换为地址信息的过程。通过百度地图API,您可以实现这些功能。

  3. 路线规划:百度地图API提供了路线规划功能,可以帮助用户规划驾车、步行、骑行等不同交通方式的路线,并提供导航指引。

  4. 定位服务:通过百度地图API,您可以获得用户的位置信息,实现定位功能。

  5. 地图数据可视化:百度地图API还提供了丰富的数据可视化功能,如热力图、点聚合等,帮助用户更直观地展示地图数据。

要使用百度地图API,您需要注册百度开放平台账号,创建应用并获取API密钥。随后,您可以根据具体的需求选择合适的API接口,并按照文档说明进行集成开发。

教程

创建成功的百度AK应用

项目开发,配置使用的语法是vue3

vue语法

效果图

代码,根据实际的需求来拿取,可以参考百度地图官网

onMounted(() => {
    BMap = window.BMap;
    console.log(BMap);
    map = new BMap.Map("l-map");
    map.centerAndZoom("北京", 12);

    ac = new BMap.Autocomplete({
        "input": "suggestId",
        "location": map
    });

    ac.addEventListener("onhighlight", onHighlight);
    ac.addEventListener("onconfirm", onConfirm);
    var point = new BMap.Point(route.query.longitude, route.query.latitude); // 创建点坐标
    map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
    map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放

    // 创建标注点
    var marker = new BMap.Marker(point); // 创建标注
    map.addOverlay(marker); // 将标注添加到地图中

    // 定位当前浏览器位置
    var geolocation = new BMap.Geolocation(); // 创建定位实例
    console.log(geolocation);
    geolocation.getCurrentPosition(function (r) {
        if (this.getStatus() == BMAP_STATUS_SUCCESS) {
            var mk = new BMap.Marker(r.point); // 根据定位结果创建标注
            map.addOverlay(mk); // 将标注添加到地图中
            map.panTo(r.point); // 平移地图到定位结果的位置
            // alert('您的位置:' + r.point.lng + ',' + r.point.lat); // 弹出定位结果的经纬度信息
            storaddress.value = route.query.address
            console.log(storaddress.value);
        } else {
            // alert('failed' + this.getStatus()); // 定位失败时弹出错误状态
        }
    });

    // 点击地图获取经度和维度
    map.addEventListener('click', handleClick);
    function handleClick(e) {
        // alert('点击的经纬度:' + e.point.lng + ', ' + e.point.lat);
        longitude.value = e.point.lng
        latitude.value = e.point.lat
        console.log(e);
        var pt = e.point;
        console.log(pt);
        console.log(longitude.value);
        console.log(latitude.value)
        var geoc = new BMap.Geocoder();
        const marker = new BMap.Marker(new BMap.Point(longitude.value, latitude.value));
        map.addOverlay(marker);
        console.log(map.addOverlay(marker));
        geoc.getLocation(pt, (rs) => {
            const addComp = rs.addressComponents;
            storaddress.value = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
            console.log(storaddress.value + '牛');
        });
    }


});
onBeforeUnmount(() => {
    if (ac) {
        ac.removeEventListener("onhighlight", onHighlight);
        ac.removeEventListener("onconfirm", onConfirm);
    }
});

function onHighlight(e) {
    let str = "";
    let _value = e.fromitem.value;
    let value = "";
    if (e.fromitem.index > -1) {
        value = _value.province + _value.city + _value.district + _value.street + _value.business;
    }
    str = "FromItem<br />index = " + e.fromitem.index + "<br />value = " + value;

    value = "";
    if (e.toitem.index > -1) {
        _value = e.toitem.value;
        value = _value.province + _value.city + _value.district + _value.street + _value.business;
    }
    str += "<br />ToItem<br />index = " + e.toitem.index + "<br />value = " + value;
    G("searchResultPanel").innerHTML = str;
}

function onConfirm(e) {
    let _value = e.item.value;
    let myValue = _value.province + _value.city + _value.district + _value.street + _value.business;
    G("searchResultPanel").innerHTML = "onconfirm<br />index = " + e.item.index + "<br />myValue = " + myValue;

    setPlace(myValue);
    console.log(e.item.value);
    storaddress.value = e.item.value.province + e.item.value.city + e.item.value.district + e.item.value.business + e.item.value.streetNumber;
    console.log(storaddress.value);
}

function setPlace(myValue) {
    if (map) {
        map.clearOverlays();
        function myFun() {
            var pp = local.getResults().getPoi(0).point;
            map.centerAndZoom(pp, 18);
            map.addOverlay(new BMap.Marker(pp));
        }

        var local = new BMap.LocalSearch(map, {
            onSearchComplete: myFun
        })
        local.search(myValue);
        longitude.value = local.rd.QC.lng
        latitude.value = local.rd.QC.lat
        console.log(longitude.value);
        console.log(latitude.value);
        // var pt = local.rd.QC;
        // console.log(pt);
        // console.log(longitude.value);
        // console.log(latitude.value)
        // var geoc = new BMap.Geocoder();
        // const marker = new BMap.Marker(new BMap.Point(longitude.value, latitude.value));
        // map.addOverlay(marker);
        // console.log(map.addOverlay(marker));
        // geoc.getLocation(pt, (rs) => {
        //     console.log(rs);
        //     const addComp = rs.addressComponents;
        //     console.log(addComp);
        //     storaddress.value = addComp.province + addComp.city + addComp.district + addComp.street + addComp.streetNumber;
        //     console.log(storaddress.value + '牛');
        // });
        console.log(storaddress.value)
    }
}

技术细节

根据实际情况,参考api文档,复制文档的代码就能够实现需求的功能

小结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1791270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1Panel 搭建 halo博客

线上服务器一直闲置&#xff0c;刷到视频 1Panel 能更好管理服务器&#xff0c;还能快速搭建博客&#xff0c;便上手试试&#xff0c;的确很方便&#xff0c;顺手记录一下。 零、准备工作 一台服务器&#xff08;按需购买&#xff0c;此处准备的阿里云服务器一台&#xff0c;也…

负载均衡算法深度探析:F5技术在高效流量管理中的应用

传统的单一服务器模式下&#xff0c;随着用户请求量的增加&#xff0c;单个服务器可能会承受过重的压力&#xff0c;导致响应速度下降甚至系统崩溃&#xff0c;负载均衡技术应运而生。它广泛应用于各种软硬件系统中&#xff0c;将网络流量以某种算法合理分配给各个节点&#xf…

电阻、电容和电感测试仪设计

在现代化生产、学习、实验当中,往往需要对某个元器件的具体参数进行测量,在这之中万用表以其简单易用,功耗低等优点被大多数人所选择使用。然而万用表有一定的局限性,比如:不能够测量电感,而且容量稍大的电容也显得无能为力。所以制作一个简单易用的电抗元器件测量仪是很…

鸿蒙轻内核M核源码分析系列七 动态内存Dynamic Memory

内存管理模块管理系统的内存资源&#xff0c;它是操作系统的核心模块之一&#xff0c;主要包括内存的初始化、分配以及释放。 在系统运行过程中&#xff0c;内存管理模块通过对内存的申请/释放来管理用户和OS对内存的使用&#xff0c;使内存的利用率和使用效率达到最优&#x…

优思学院|质量工程师工资不高怎么办?

你是否曾经好奇&#xff0c;为什么在职场中&#xff0c;质量工程师的工资普遍不高&#xff1f;这一现象背后的原因&#xff0c;实际上与他们的职业门槛和专业知识密切相关。早期&#xff0c;国内的质量工程师入行门槛较低&#xff0c;许多人即使没有任何专业知识也可以进入这一…

2025 QS 世界大学排名公布,北大清华跻身全球前20

一年一度&#xff0c;2025 QS 世界大学排名公布&#xff01; QS&#xff08;Quacquarelli Symonds&#xff09;是唯一一个同时将就业能力与可持续发展纳入评价体系的排名。 继去年 2024 QS 排名因为“墨尔本超耶鲁&#xff0c;新南悉尼高清华”而荣登微博热搜之后&#xff0c…

c# 学习 2

常量 转义字符 类型转换

【Linux】写一个日志类

文章目录 1. 源代码2. 函数功能概览3. 代码详细解释3.1 头文件和宏定义3.2 Log类定义3.3 打印日志的方法3.4 操作符重载和析构函数3.5 可变参数函数的原理 4. 测试用例 1. 源代码 下面代码定义了一个 Log 类&#xff0c;用于记录日志信息。这个类支持将日志信息输出到屏幕、单…

java判断对象是否还在被引用

1、代码取消强引用后&#xff0c;gc回收对象 public static void main(String[] args) {Object obj new Object();WeakReference<Object> weakRef new WeakReference<>(obj);System.out.println(weakRef.get());obj null; // 取消强引用,后续gc会被回收,如果不…

endnote IEEEtran 参考文献 输出Latex

文章目录 参考文献Latex1. 新建格式1.1 新建BibTeX Export样式文件1.2 保存自定义文献格式 2 修改2.1 修改Journal Names 为简写2.2 修改Author Lists2.3 修改 模版 Templates 3. 特殊字符作者名字标题 4. 增加期刊简写4.1 删除已有简写的Term Lists 4.2 下载最新的Term LIsts4…

自动化办公02 用openpyxl库操作excel.xlsx文件(新版本)

目录 一、文件读操作 二、文件写操作 三、修改单元格样式 openpyxl 是一个处理Excel表格的第三方库。openpyxl 库可以处理Excel2010以后的电子表格格式&#xff0c;包括&#xff1a;xlsx/xlsm/xltx/xltm。 openpyxl教程 一、文件读操作 工作簿(workbook): excel文件 工作表…

PID控制算法介绍及使用举例

PID 控制算法是一种常用的反馈控制算法&#xff0c;用于控制系统的稳定性和精度。PID 分别代表比例&#xff08;Proportional&#xff09;、积分&#xff08;Integral&#xff09;和微分&#xff08;Derivative&#xff09;&#xff0c;通过组合这三个部分来调节控制输出&#…

宝塔nginx配置

将跟php有关的注释掉&#xff1a; 添加&#xff1a; #解决vue刷新404问题try_files $uri $uri/ /index.html; location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header…

SOCKS 代理 和 HTTP 代理, WebSocket

SOCKS 代理 和 HTTP 代理 的区别 SOCKS 代理 和 HTTP 代理 都是代理服务器&#xff0c;它们充当客户端和目标服务器之间的中介&#xff0c;但它们的工作方式和应用场景有所不同。 1. SOCKS 代理&#xff1a; 工作原理&#xff1a; SOCKS 代理是一种更底层的代理&#xff0c;…

攻防世界—webbaby详解

1.ssrf注入漏洞 ssrf&#xff08;服务端请求伪造&#xff09;是一种安全漏洞&#xff0c;攻击者通过该漏洞向受害服务器发出伪造的请求&#xff0c;从而访问并获取服务器上的资源&#xff0c;常见的ssrf攻击场景包括访问内部网络的服务&#xff0c;执行本地文件系统命令&#…

基于小波变换贝叶斯LMMSE估计的图像降噪方法(MATLAB 2018)

自从小波被发现以来&#xff0c;由于其优良的时频局部化性能&#xff0c;大大解决了信号与图像降噪的难题。利用小波降噪大致有三种方法&#xff0c;分别是基于小波模极大值原理、基于小波变换系数的相关性&#xff0c;和最为常用的小波阈值函数法。 基于小波模极大值降噪 该…

React(五)useEffect、useRef、useImperativeHandle、useLayoutEffect

(一)useEffect useEffect – React 中文文档 useEffect hook用于模拟以前的class组件的生命周期&#xff0c;但比原本的生命周期有着更强大的功能 1.类组件的生命周期 在类组件编程时&#xff0c;网络请求&#xff0c;订阅等操作都是在生命周期中完成 import React, { Com…

C语言的printf输出问题

看到这段代码的时候&#xff0c;想到这个printf输出的值是多少? 若您想到的答案是1-2&#xff0c;真的是这样吗&#xff1f; #include <stdio.h>int main(int argc, char *argv[]) {int i 1;printf("%d-%d\r\n", i, i);return 0; }先了解一个知识点&#xf…

QT安装与使用

QT安装与使用 Windows QT安装 1.下载windowsQT安装包 本教程使用的QT版本是&#xff1a;https://download.qt.io/archive/qt/5.12/5.12.9/ 本教程的安装包放在阿里云盘供大家获取。 2.QT安装 如果没有梯子&#xff0c;大家登录QT官网可能会失败&#xff0c;这里可以不需要Q…

VS Code 开发小技巧

VS Code的开发小技巧 添加代码片段 平时开发的时候&#xff0c;可以快速创建一个空白的模板。 一个快速生成代码片段的网站&#xff1a;https://snippet-generator.app/ 打开网站&#xff0c;把常用的模板代码复制进去&#xff0c;就会自动生成VS Code可以使用的代码片段了。…