百度地图API的使用(附案例)

news2025/3/11 15:43:11

文章目录

  • JavaScript API GL
  • 一、申请秘钥
  • Hello World
  • 显示地址案例
  • 定位功能
  • 步行导航
  • 搜索功能
  • 地铁路线规划


JavaScript API GL

百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发。

一、申请秘钥

在这里插入图片描述

在控制台里选择创建应用

在这里插入图片描述
选择浏览器端,白名单输入*

在这里插入图片描述

Hello World

我们直接把文档内的代码cv过来,加上秘钥就可以直接使用地图了

<!DOCTYPE html>
<html>

<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Baidu Map </title>
    <style type="text/css">
        html {
            height: 100%
        }

        body {
            height: 100%;
            margin: 0px;
            padding: 0px
        }

        #container {
            height: 100%
        }
    </style>
</head>

<body>
    <div id="container"></div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=******"></script>
<script>
    var map = new BMapGL.Map("container");          // 创建地图实例 
    var point = new BMapGL.Point(116.404, 39.915);  // 创建点坐标 
    map.centerAndZoom(point, 15);
    map.enableScrollWheelZoom(true); 
</script>

</html>

在这里插入图片描述

显示地址案例

我们向地图添加标注点和信息窗口

在这里插入图片描述

在这里插入图片描述

<!DOCTYPE html>
<html>

<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Baidu Map </title>
    <style type="text/css">
        html {
            height: 100%
        }

        body {
            height: 100%;
            margin: 0px;
            padding: 0px
        }

        #container {
            height: 100%
        }
    </style>
</head>

<body>
    <div id="container"></div>
</body>
<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=*****"></script>
<script>
    var map = new BMap.Map("container");    
var point = new BMap.Point(116.404, 39.915);    
map.centerAndZoom(point, 15);    
var marker = new BMap.Marker(point);        // 创建标注    
marker.enableDragging();    
marker.addEventListener("dragend", function(e){    
    alert("当前位置:" + e.point.lng + ", " + e.point.lat);    
})   

map.addOverlay(marker);  
    var opts = {    
    width : 250,     // 信息窗口宽度    
    height: 100,     // 信息窗口高度    
    title : "这里是天安门"  // 信息窗口标题   
}    
var infoWindow = new BMap.InfoWindow("", opts);  // 创建信息窗口对象    
map.openInfoWindow(infoWindow, map.getCenter());       // 打开信息窗口
</script>

</html>

在这里插入图片描述

定位功能

我们可以拖动标注点来获取到标注点的坐标

<!DOCTYPE html>
<html>

<head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Baidu Map </title>
    <style type="text/css">
        html {
            height: 100%
        }

        body {
            height: 100%;
            margin: 0px;
            padding: 0px
        }

        #container {
            height: 100%
        }
    </style>
</head>

<body>
    <div id="container"></div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=******"></script>
<script>
    var map = new BMapGL.Map("container");          // 创建地图实例 
    var point = new BMapGL.Point(116.404, 39.915);  // 创建点坐标 
    map.centerAndZoom(point, 15);
    map.enableScrollWheelZoom(true);
    var point = new BMapGL.Point(116.404, 39.915);
    var marker = new BMapGL.Marker(point);        // 创建标注   
    map.addOverlay(marker);
    marker.enableDragging();    
    marker.addEventListener("dragend", function(e){    
        alert("当前位置:" + e.point.lng + ", " + e.point.lat);    
    })   
</script>

</html>

在这里插入图片描述

步行导航

我们已经学会使用标注点了
那么我们就可以创建2个标注点来设计步行路线

<!DOCTYPE html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <title>步行路线规划</title>
    <script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=*******"></script>
    <style type="text/css">
        body,
        html,
        #container {
            width: 100%;
            height: 100%;
            overflow: hidden;
            margin: 0;
            font-family: "微软雅黑";
        }
    </style>
</head>

<body>
    <div id="container"></div>
    <script type="text/javascript">
        var points = [];
        var map = new BMap.Map("container");
        map.centerAndZoom(new BMap.Point(116.404, 39.915), 14);
        map.addEventListener('click', function (e) {
            if(points.length==2){
                map.clearOverlays()
                points=[];
            }
            var point = new BMap.Point(e.point.lng, e.point.lat)
            points.push(point)
            var marker = new BMap.Marker(point);
            map.addOverlay(marker);

            if (points.length == 2) {
                var walking = new BMap.WalkingRoute(map, {
                    renderOptions: {
                        map: map,
                        autoViewport: true
                    }
                });
                walking.search(points[0], points[1]);
            }
        })


    </script>
</body>

</html>

在这里插入图片描述

搜索功能

使用local.search()来实现搜索功能

<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <style type="text/css">
        body,
        html {
            width: 100%;
            height: 100%;
            margin: 0;
            font-family: "微软雅黑";
        }

        #allmap {
            width: 100%;
            height: 500px;
        }
        .ipt{
            margin: 20px auto;
            width: 350px;
        }
        input {
            font-size: 14px;
            width: 300px;
            display: inline-block;
        }
    </style>
    <script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=****"></script>
    <title>根据关键字本地搜索</title>
</head>

<body>
    <div class="ipt">
    <input type="text">
        <button>搜索</button>
    </div>
    <div id="allmap"></div>
</body>

</html>
<script type="text/javascript">
    // 百度地图API功能
    var map = new BMap.Map("allmap");
    map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
    var local = new BMap.LocalSearch(map, {
        renderOptions: { map: map }
    });
    var ipt=document.querySelector('input');
    // console.log(ipt)
    var btn=document.querySelector('button');
    btn.onclick=function(){
        // alert('aa')
        local.search(ipt.value);
        ipt.value=''
    }

</script>

在这里插入图片描述

地铁路线规划

原理跟地图路线规划一样,添加两个标注点,根据标注点来规划路线

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>线路规划</title>
    <script type="text/javascript"
        src="//api.map.baidu.com/api?type=subway&v=1.0&ak=*****"></script>
    <style type="text/css">
        #container {
            height: 100%
        }
    </style>
</head>

<body>
    <div id="container"></div>
    <script type="text/javascript">
        var subwayCityName = '广州';
        var list = BMapSub.SubwayCitiesList;
        var subwaycity = null;
        for (var i = 0; i < list.length; i++) {
            if (list[i].name === subwayCityName) {
                subwaycity = list[i];
                break;
            }
        }
        // 获取广州地铁数据-初始化地铁图
        var subway = new BMapSub.Subway('container', subwaycity.citycode);
        var zoomControl = new BMapSub.ZoomControl({
            anchor: BMAPSUB_ANCHOR_BOTTOM_RIGHT,
            offset: new BMapSub.Size(10, 100)
        });
        subway.addControl(zoomControl);
        var zoomControl = new BMapSub.ZoomControl({
            anchor: BMAPSUB_ANCHOR_BOTTOM_RIGHT,
            offset: new BMapSub.Size(10, 100)
        });
        subway.addControl(zoomControl);

        var points = [];
        subway.addEventListener('tap', function (e) {
            if (points.length == 0) {
                var startIcon = new BMapSub.Icon(
                    'https://api.map.baidu.com/images/subway/start-bak.png',
                    new BMapSub.Size(50, 80)
                );
                var marker = new BMapSub.Marker(e.station.name, { icon: startIcon });
                subway.addMarker(marker);
                subway.setCenter(e.station.name);
                subway.setZoom(1);
                points.push(e.station.name)
            } else {
                var startIcon = new BMapSub.Icon(
                    'https://api.map.baidu.com/images/subway/end-bak.png',
                    new BMapSub.Size(50, 80)
                );
                var marker = new BMapSub.Marker(e.station.name, { icon: startIcon });
                subway.addMarker(marker);
                subway.setCenter(e.station.name);
                subway.setZoom(1);
                points.push(e.station.name)
                var drct = new BMapSub.Direction(subway);
                drct.search(points[0], points[1]);
                subway.clearOverlays()
                points = []
            }
        });
    </script>
</body>

</html>

在这里插入图片描述

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

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

相关文章

经典文献阅读之--用于自动驾驶的高清地图生成技术

0. 简介 这篇文章我们介绍一下论文“High-Definition Map Generation Technologies For Autonomous Driving: A Review“&#xff0c;2022年6月11日&#xff0c;来自加拿大Ontario Tech University。相较于网上的其他文章&#xff0c;本文更在意向读者更轻松全面的了解文章中介…

【Web前端大作业】基于HTML+CSS+JavaScript制作西北大学新闻网站(7页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

悬浮坐标解决方案:如何在图片获取xy鼠标位置和增加标注信息

悬浮坐标的定义&#xff0c;基于固定分辨率的图片&#xff0c;通过获取该图片x和y坐标确定位置后并添加标注&#xff0c;实现位置展示、对应图片内物品展示的一种标注开发方式。 技术要点 自动获取图片x和y坐标&#xff1b;将多个坐标xy在图片上通过CSS定位的方式予以展示&am…

pytorch学习(三)——模型层

文章目录1. 自定义模型层2. 使用预训练模型3. 模型构建风格3.1 使用 add_module 方法3.2 添加进 Sequential3.3 Sequential作为模型容器3.4 ModuleList作为模型容器3.5 ModuleDict作为模型容器当我们构建了数据管道能够将数据一个batch一个batch的取出来后&#xff0c;下一步就…

微信小程序函数处理之保姆级讲解

目录 生命周期函数 生命周期函数的调用过程 页面事件函数 页面路由管理 自定义函数 setData设值函数 生命周期函数 在使用Page&#xff08;&#xff09;构造器注册页面时&#xff0c;需要使用生命周期函数&#xff0c;包括onLoad&#xff08;&#xff09;页面加载时生命周…

硬件工程师成长之路(10.1)——芯片选型

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录前言一、电机驱动类1 、直流电机驱动芯片2、步进电机③、资料前言 送给大学毕业后找不到奋斗方向的你&#xff08;每周…

【车间调度】基于全球邻域和爬坡来优化模糊柔性作业车间调度问题(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

VS Studio 搭建跨平台开发环境

VS Studio 搭建跨平台开发环境 增加VS的工作负载 打开Visual Studio Installer 安装器&#xff0c;点击修改 在这个界面找到Linux开发环境&#xff0c;勾上然后在点击右下角的修改等待安装。我的是因为已经有了所以下面那里显示的是关闭&#xff0c;没有的是显示的修改 等待安…

LabVIEW强制重新安装无法运行或损坏的NI软件

LabVIEW强制重新安装无法运行或损坏的NI软件 可以参考附件的录像说明。LabVIEW强制重新安装无法运行或损坏的NI软件 - 北京瀚文网星科技有限公司 (bjcyck.com) 某些NI软件&#xff0c;工具包或驱动程序已损坏&#xff0c;损坏或无法按预期运行&#xff0c;想尝试重新安装以进…

【ArchSummit】众安金融微服务架构演进实战

前言 &#x1f4eb; 作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &a…

网络原理——传输层_UDP

JavaEE传送门JavaEE JavaEE——No.2 套接字编程(TCP) JavaEE——网络原理_应用层 目录传输层UDP传输层 端到端之间的传输, 重点关注的是起点和终点 核心的协议有两个: UDP: 无连接, 不可靠传输,面向数据报, 全双工 TCP: 有链接, 可靠传输, 面向字节流, 全双工 UDP UDP协议…

nginx+tomcat(二)

四层代理: 四层代理: 一般使用七层代理也就是http应用层代理&#xff0c;可以反向代理和负载均衡。但是项目要使用长连接&#xff0c;此时内网服务器肯定不能暴漏&#xff0c;还是需要接入层网关进行转发&#xff0c;一般有使用lvs&#xff0c;lvs专门用作四层代理和负载均衡基…

【C++】模板初阶

文章目录一、泛型编程二、函数模板1、概念与格式2、底层原理3、实例化4、参数的匹配规则三、类模板1、概念与格式2、实例化一、泛型编程 我们通过实现一个通用的交换函数来引入泛型编程&#xff1a; void Swap(int& left, int& right) {int temp left;left right;r…

Linux 命令(147) —— truncate 命令

文章目录1.命令简介2.命令格式3.选项说明4.常用示例参考文献1.命令简介 truncate 将文件的大小缩小或扩展到指定的大小。 如果指定的文件不存在将被创建。 如果文件大于指定的大小&#xff0c;则会丢失额外的数据。如果较短&#xff0c;它将被扩展&#xff0c;扩展的稀疏部分…

【牛客刷题--SQL篇】多表查询组合查询SQL25 查找山东大学或者性别为男生的信息

&#x1f496;个人主页&#xff1a;与自己作战 &#x1f4af;作者简介&#xff1a;CSDN博客专家、CSDN大数据领域优质创作者、CSDN内容合伙人、阿里云专家博主 &#x1f49e;牛客刷题系列篇&#xff1a;【SQL篇】】【Python篇】【Java篇】 &#x1f4cc;推荐刷题网站注册地址&a…

Python数据分析与挖掘————图像的处理

系列文章目录 文章目录系列文章目录前言图片的马赛克一.安装matplotlib&#xff0c;numpy等模块二.马赛克图片一.导入图片二.定位区域三.图片的合成图片拼接图像的灰度化一.max()方法二.min&#xff08;&#xff09;方法三.平均值法mean()函数四.加权平均值法图片的分割总结源代…

基于tauri+vue3.x多开窗口|Tauri创建多窗体实践

最近一种在捣鼓 Tauri 集成 Vue3 技术开发桌面端应用实践&#xff0c;tauri 实现创建多窗口&#xff0c;窗口之间通讯功能。 开始正文之前&#xff0c;先来了解下 tauri 结合 vue3.js 快速创建项目。 tauri 在 github 上star高达53K&#xff0c;而且呈快速增长趋势。相比elect…

DDoS报告团伙规模

攻击资源活跃度分析 在攻击源活时间的监测中发现&#xff0c;和 2019 年趋势一致&#xff0c;存活时间大于 10 天的攻击资源占比 11%。像这种能够长期被控制的肉鸡大部分都是物联网 设备&#xff0c;物联网设备大都存在设备系统老&#xff0c;人员维 护少&#xff0c;更新慢等…

vue当中的事件处理

1.绑定监听v-on 最简单的一个绑定监听的事件 <body><div id"root"><h1>my name is {{name}}</h1><button v-on:click"showInfo">click me</button></div><script type"text/javascript">Vue.…

HotSpot 虚拟机对象探秘-对象的创建、内存布局、访问定位

目录对象的创建检查类的符号引用&#xff0c;是否执行过类的加载过程分配内存指针碰撞&#xff1a;空闲列表&#xff1a;线程安全的问题&#xff0c;对分配内存空间的动作进行同步处理——TLAB初始化虚拟机对对象进行必要的设置&#xff0c;执行构造方法对象的内存布局对象头包…