百度地图API

news/2024/5/19 0:27:56/文章来源:https://blog.csdn.net/weixin_55101030/article/details/126979351

一、百度地图API接入

1、搜索百度地图开发平台

2、注册百度账号

3、登陆并申请成为开发者

4、在百度地图开发平台的首页选择控制台,在控制台中创建应用

image.png

创建好应用以后就能在控制台我的应用中看到这个应用,其中最重要的是AK,这是百度地图分配给我们应用的一个专用的秘钥,必须使用秘钥才能访问百度地图API。

image.png

二、在HTML中使用百度地图API

1、在html中引入百度地图js文件

<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.0&type=webgl&ak=O7Gi483Fu8zl71Srxd2imC6YG39zIVF1"></script>

将ak后的值替换为我们自己的秘钥。

2、在网页中定义一个DIV用于显示地图

显示地图的DIV一定要有id属性。

image.png

3、在网页中显示地图

基础步骤:

var map = new BMapGL.Map("container");          // 创建地图实例 
var point = new BMapGL.Point(116.404, 39.915);  // 通过地理位置的经纬度创建点坐标
map.centerAndZoom(point, 15);                 // 初始化地图,设置中心点坐标和地图级别

可选步骤:

map.centerAndZoom(point, 15);                   // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true);                //开启鼠标滚轮缩放
map.setMapType(BMAP_EARTH_MAP);                 // 设置地图类型为地球模式

4、添加可选控件

var scaleCtrl = new BMapGL.ScaleControl();  // 添加比例尺控件
map.addControl(scaleCtrl);
var zoomCtrl = new BMapGL.ZoomControl();  // 添加缩放控件
map.addControl(zoomCtrl);
var cityCtrl = new BMapGL.CityListControl();  // 添加城市列表控件
map.addControl(cityCtrl);
var locationControl = new BMapGL.LocationControl();  // 添加定位控件
map.addControl(locationControl);

5、定位功能

百度地图支持浏览器定位和IP定位,当浏览器定位失败时,会默认采用IP定位。浏览器定位更加精确,IP定位只能定位到大概位置。

百度地图自带定位控件没有使用IP定位

//调用浏览器定位
geolocation.getCurrentPosition(function(result){console.log(result);if(this.getStatus() == BMAP_STATUS_SUCCESS){//浏览器定位成功map.centerAndZoom(result.point, 18);let mk = new BMapGL.Marker(result.point);//创建标记,r是定位结果,r.point就是当前定位的地点map.addOverlay(mk);//将标记对象添加到地图上}else{let myCity = new BMapGL.LocalCity();myCity.get(function(result){//IP定位成功map.centerAndZoom(result.center, 18);let mk = new BMapGL.Marker(result.center);//创建标记,r是定位结果,r.point就是当前定位的地点map.addOverlay(mk);//将标记对象添加到地图上}); }
});         

6、添加地图标记

  //给地图添加点击事件
map.addEventListener("click",function(e){//形参名称e地图点击事件的事件源//console.log(e.latlng.lng+","+e.latlng.lat);var mk = new BMapGL.Marker(e.latlng);//创建标记,r是定位结果,r.point就是当前定位的地点map.addOverlay(mk);//将标记对象添加到地图上
})

7、给地图标记添加点击事件

 //给地图添加点击事件
map.addEventListener("click",function(e){//形参名称e地图点击事件的事件源//console.log(e.latlng.lng+","+e.latlng.lat);var mk = new BMapGL.Marker(e.latlng);//创建标记,r是定位结果,r.point就是当前定位的地点mk.addEventListener("click",function(){//给标记添加点击事件console.log(this);//this指代标记//由于标记属于地图对象map的子标签,所以当我们点击标记时,会出现冒泡,map的点击事件也会触发//可以使用事件源对象的stopPropagation函数组织后续的事件冒泡event.stopPropagation();});map.addOverlay(mk);//将标记对象添加到地图上
})

8、添加信息窗口

//添加信息窗口(封装的函数)
function addInfoWindow(content,point,width,height,title) {//必要参数 content和point//content既可以是文本 也可以是标签//point是经纬度地理位置//后面3个参数是可选的var opts = {width: width,     // 信息窗口宽度height: height,    // 信息窗口高度title: title  // 信息窗口标题}var infoWindow = new BMapGL.InfoWindow(content, opts);  // 创建信息窗口对象map.openInfoWindow(infoWindow, point);        // 打开信息窗口//删除//map.closeInfoWindow();
}

9、路径规划

驾车路径规划

//驾车路径规划对象 
//该对象一定在地图加载出来以后再创建 一般放在创建好地图对象map以后 而且一个网页最好只能创建一次 否则将无法清除上一次的规划路径
let driving = new BMapGL.DrivingRoute(map, { renderOptions: { map: map, autoViewport: true } });
//使用路径规划对象 查找路线
driving.clearResults();//从地图上清空上一次的规划路径
driving.search(startPoint, endPoint);//开始路径规划,传入开始点和结束点

公交路径规划

//公交路径规划对象
//创建公交路径规划对象 一定在地图加载出来以后再创建 一般放在创建好地图对象map以后 而且一个网页最好只能创建一次 否则将无法清除上一次的规划路径
transit = new BMapGL.TransitRoute(map, {renderOptions: { map: map },onSearchComplete: function (results) {if (transit.getStatus() != BMAP_STATUS_SUCCESS) {return;}//alert(results.getNumPlans());//获取公交规划方案总数//在此处设计公交路径规划显示的html模板var output = '';for(var i=0;i<results.getNumPlans();i++){var plan = results.getPlan(i);output +='<div style="margin-top:5px; background-color:#CCC"><p>总时长:'+plan.getDuration(true)+'</p>';//获取时间output += '<p>总路程:'+plan.getDistance(true)+'</p>';  //获取距离output +=plan.getDescription(true)+"</div>";}$('#result').css('display', 'block');//#result 是我们自己定义的一个div 绝对定位 先隐藏起来 路径规划成功显示$('#result').html(output);// 将组装好的路径规划HTML标签模板放到#result div中显示出来},
});
transit.clearResults();//清空上次规划路径
transit.search(startPoint, endPoint);//公交路径规划

10、正逆地址解析

根据经纬度查找位置

// 创建地理编码实例      
var myGeo = new BMapGL.Geocoder();      
// 根据坐标得到地址描述    
myGeo.getLocation(经纬度坐标点, function(result){//funcation是一个回调函数 该回调函数在查找到了具体的地理信息之后才执行if (result){      alert(result.address);      }      
});

根据地理位置查询经纬度坐标

//创建地址解析器实例
var myGeo = new BMapGL.Geocoder();
// 将地址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(地址字符串(重庆市红旗河沟), function(point){if(point){//point就是经纬度点}else{alert('您选择的地址没有解析到结果!');}
},"成都")//可选参数传入城市名称 如果不传则在全球范围内查找 传入城市名称只在这个城市内查找
址解析结果显示在地图上,并调整地图视野
myGeo.getPoint(地址字符串(重庆市红旗河沟), function(point){if(point){//point就是经纬度点}else{alert('您选择的地址没有解析到结果!');}
},"成都")//可选参数传入城市名称 如果不传则在全球范围内查找 传入城市名称只在这个城市内查找

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0-1,如何用低代码搭建管理系统

关键字&#xff1a;功能模块、流程中心、OA 前言&#xff1a;对于搭建系统&#xff0c;字眼上都知道是怎么回事&#xff0c;但要怎么搭建到最后怎么呈现一个投入运作的系统&#xff0c;估计就很少人知道了。当然作为专业的程序员肯定知道怎么操作&#xff0c;但是不是必须要专业…

IDEA集成Git

介绍 参考视频教程: https://www.bilibili.com/video/BV1vy4y1s7k6?p27 1 配置 Git 忽略文件 1.1为什么要配置 问题 1:为什么要忽略他们&#xff1f; 答&#xff1a;与项目的实际功能无关&#xff0c;不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之 间的差异。…

湖仓一体电商项目(十八):业务实现之编写写入DWD层业务代码

文章目录 业务实现之编写写入DWD层业务代码 一、代码编写 二、​​​​​​​​​​​​​​创建Iceberg-DWD层表 1、在Hive中添加Iceberg表格式需要的包 2、创建Iceberg表 三、代码测试 1、在Kafka中创建对应的topic 2、将代码中消费Kafka数据改成从头开始消费 3、执…

【展馆攻略】展馆室内精准定位导航服务,便捷无忧,所见必达!

近年来&#xff0c;室内定位导航服务被各大商场、园区、景区等场所广泛使用&#xff0c;逐渐融入到人们日常生活中。室内地图从传统的平面信息图发展到智能化3D可视化交互展示&#xff0c;实现了室内综合场景的精准定位导航。 在面对室内或者建筑物遮挡区域&#xff0c;室内导航…

浏览器如何渲染页面?

DOM 浏览器渲染页面的过程就像是盖房子&#xff0c;一般先请求服务器得到HTML文件&#xff0c;HTML文件就相当于网页的框架结构&#xff0c;不过一开始浏览器得到的是显示字节内容的HTML文件&#xff0c;必须要内化为自己看的懂的语言才行&#xff0c;于是就把字节转化为字符&…

vue小案列(hello world)

目录 1 页签图标的报错解决 2 创建vue实例 3 初识Vue分析 1 页签图标的报错解决 1 首先&#xff0c;在我们的html中定义一个容器&#xff0c;然后右键&#xff08;Open with LIve Server&#xff09;打开&#xff0c;需要安装LIve Server插件 打开之后发现控制台报如下错误&a…

2022年服装进销存软件排行榜重磅出炉!

小编调研了一下身边做服装行业的老板&#xff0c;普遍反映如今服装实体店越来越难做了&#xff0c;日常经营过程中&#xff0c;难免会遇到各种问题&#xff1a;商品种类多、款式多、库存多、活动多……这些都让老板们应接不暇&#xff0c;尽管每天早出晚归地管理店铺&#xff0…

怎么音频转文字?快把这些方法收好

相信不少的小伙伴&#xff0c;经常需要对自己的录音文件进行整理归纳吧&#xff0c;其中不乏是课堂的重点知识、会议上的重点纪要、谈判中的重点内容。那小伙伴们平时在整理的时候&#xff0c;大概都需要花费多少时间呢&#xff1f;为了能够将音频的内容完整呈现出来&#xff0…

SpringBoot多数据源

使用场景 在实际开发中&#xff0c;可能遇到多数据源的场景。 业务复杂&#xff08;数据量大&#xff09; 数据分布在不同的数据库中&#xff0c;对业务数据进行垂直拆分。 可以拆分为微服务架构&#xff0c;依赖的业务可以通过远程调用的方式来是实现&#xff0c;那么这种方…

机器学习中常见性能度量汇总

前言 如果你对这篇文章可感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 回归 在回归任务上&#xff0c;目前最常用的性能度量方式是均方误差 (Mean Squared Error, MSE)&#xff1a; MSE1m∑i1…

flex布局

flex布局 开启flex功能 <html><head><style>.container{border: 1px solid #000;width: 400px;height: 400px;margin-left: 20px;margin-top: 20px;display: flex; // 开启flex布局}.item{width: 100px;height: 100px;color: #fff;text-align: center;line…

kubernetes(2)k8s环境搭建:kubeadm安装、二进制方式安装

环境平台规划 k8s里面之前我们了解过&#xff0c;主要的内容是master和node&#xff0c;所有这里可以划分为 单master集群多master集群 单master集群 缺点&#xff1a;master挂掉后&#xff0c;便不能去管理node节点了 多master集群 与之前的区别便是多了master 服务器硬件…

Prometheus监控进程

Prometheus监控进程 process-export主要用来做进程监控&#xff0c;比如某个服务的进程数、消耗了多少CPU、内存等资源。 一、process-exporter使用 ‍ 1.1 下载 process-exporter process-exporter GibHUB地址 process-exporter 下载地址 process-exporter可以使用命令行…

图解LeetCode——854. 相似度为 K 的字符串(难度:困难)

一、题目 对于某些非负整数 k &#xff0c;如果交换 s1 中两个字母的位置恰好 k 次&#xff0c;能够使结果字符串等于 s2 &#xff0c;则认为字符串 s1 和 s2 的 相似度为 k 。 给你两个字母异位词 s1 和 s2 &#xff0c;返回 s1 和 s2 的相似度 k 的最小值。 二、示例 2.1…

C语言手写HTTPD网站服务器

网站服务器&#xff08;HTTPD&#xff09;已经有很多版本&#xff0c;但是大部分对初学者都非常不友好。适合初学者学习的httpd服务器&#xff0c;最负盛名的当数tinyhttpd, 但是这个版本&#xff0c;是基于Linux系统的&#xff0c;而且配套的CGI也是使用perl语言写的&#xff…

宝塔面板修改secure_file_priv设置

1、secure_file_priv文件作用 mysql读取系统文件权限的设置参数 2、查询secure_file_priv设置 show variables like %secure%; 3、修改secure_file_priv设置 设置 secure_file_priv"/" 需要修改mysql配置文件my.cnf my.cnf文件有两个位置 /etc/my.cnf /www/serv…

线程安全简述

目录 1、线程是否安全 2、出现线程安全的原因如下&#xff1a; 3、原子性问题 4、synchronized关键字 1、锁对象 2、用法&#xff1a; 3、可重入锁 5、内存可见性 6、volatile关键字 7、JMM 1、线程是否安全 线程不安全就是一些代码在多线程的运行状态下&#xff0c…

一个基于.Net Core开发的适合外贸商城系统

今天给大家推荐一个适合外贸的商城系统。 项目简介 这是一个基于.Net Core开发的&#xff0c;兼容PC、平板、移动端的商城系统。被下载次数超过300w&#xff0c;拥有最活跃的成员&#xff0c;由专业团队开发与支持。支持PayPal、信用卡、发票支付。 技术架构 1、跨平台&…

Jmeter电商系统压测实战<二>

目录一、Jmeter优化tips二、Jmeter的使用建议-参数配置1. XX:MaxMataspaceSize&#xff08;jdk8的参数&#xff09;2. -Xmx2048m3. -Xms1g三、Jmeter插件1. 介绍及安装2. 常用插件四、Jmeter日志收集1. 概览2. elk&#xff0c;kibana和es的安装和配置3. Prometheus和Node Expor…

全系标配L2占比首次突破30%,「数据」赛道争夺战一触即发

智能驾驶的进阶战&#xff0c;无论是提升车型产品竞争力&#xff0c;还是为高阶功能和现有功能优化提供闭环数据迭代&#xff0c;全系标配已经成为主流趋势。 如果说智能化1.0阶段&#xff0c;车企拼的是技术的快速落地和高阶能力的标杆效应&#xff0c;那么2.0阶段就是拼规模…