第一次接触百度地图?前端看这篇就够啦
想要使用百度地图,首先要注册一个账号
百度地图开放平台 | 百度地图API SDK | 地图开发
创建地图
1. 引入百度地图API文件
<script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=您的密钥"></script>
密钥就是访问应用下面的一串字符
2. 初始化地图逻辑
首先创建地图实例,之后用一个Point坐标点和缩放级别来初始化地图
var map = new BMapGL.Map("container"); // 创建地图实例
var point = new BMapGL.Point(116.404, 39.915); // 创建点坐标
map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
container就是容器
3. 开启鼠标滚轮缩放
地图的鼠标滚轮缩放默认是关闭的,需要配置开启。
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放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 marker = new BMapGL.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
向地图中心点添加了一个标注,并使用默认的标注样式
map.addEventListener("click", e => {var p = new BMapGL.Point(e.latlng.lng, e.latlng.lat);var m = new BMapGL.Marker(p);last = mmap.addOverlay(m); // 将标注添加到地图中})
单击在地图中添加点的效果
线、面
// 添加点var marker = new BMapGL.Marker(point); // 创建标注 map.addOverlay(marker); // 将标注添加到地图中// 记录点的数组var lineArr = [];// 记录上一个个var last = null;// 添加事件 map.addEventListener("click",e=>{ // 有上一个就移除上一个last?map.removeOverlay(last):''; // 获取单击点的位置(经度,纬度)var p = new BMapGL.Point(e.latlng.lng, e.latlng.lat); // 添加到数组组件lineArr.push(p);// 创建一个标记var m = new BMapGL.Marker(p); // 重新定义上一个last = m;// 显示标记map.addOverlay(m); })// 双击事件map.addEventListener("dblclick",()=>{// 移除最后点map.removeOverlay(last)// 多边线 strokeColor颜色 strokeWeight线粗细 strokeOpacity 线的透明度 // var polyline = new BMapGL.Polyline(lineArr,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});// 显示线// map.addOverlay(polyline);var polygon = new BMapGL.Polygon(lineArr,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5,fillColor:"red"})map.addOverlay(polygon);// 清空数组lineArr=[];
将 lineArr 按顺序首尾相连,最终围成一个封闭图形的效果
画圈
var circle = new BMapGL.Circle(point, 1000, { strokeColor: "blue", strokeWeight: 2, strokeOpacity: 0.5 }); //创建圆map.addOverlay(circle);
地图中心画圆
文本标注
var content = "<strong style='color:red'>中国</strong>牛";var label = new BMapGL.Label(content, { // 创建文本标注position: point, // 设置标注的地理位置offset: new BMapGL.Size(10, 20) // 设置标注的偏移量})map.addOverlay(label);
效果如下:
信息窗口
var opts = {width: 250, // 信息窗口宽度height: 200, // 信息窗口高度title: "Hello" // 信息窗口标题}// 内容var content = `<p>终身学习爱好者</p><img src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" width="120">`var infoWindow = new BMapGL.InfoWindow(content, opts); // 创建信息窗口对象map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口// 通过标记添加单击事件,打开信息窗口marker.addEventListener('click', () => {map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口
效果如下:
关闭之后可以通过点击标志点重新打开
在vue中使用百度地图
1. 在 pulic 下的 index.html 中引入
<script type="text/javascript" src="https://api.map.baidu.com/api?v=1.0&type=webgl&ak=密钥"></script>
2. 在使用的文件里
<template><div><div id="container" ref="dom"></div></div>
</template>
<style>
#container {width: 800px;height: 600px;
}
</style>
<script setup>
import { ref, onMounted } from "vue";
const dom = ref();
let map;
onMounted(() => {map = new BMapGL.Map(dom.value);// 创建地图实例var point = new BMapGL.Point(113.6648, 34.7835);// 创建点坐标map.centerAndZoom(point, 15);// 初始化地图,设置中心点坐标和地图级别map.enableScrollWheelZoom(true);map.setMapType(BMAP_EARTH_MAP);
});
</script>
第一次接触百度地图?前端看这篇就够啦相关推荐
- Spring Cloud入门,看这篇就够了!
点击▲关注 "中生代技术" 给公众号标星置顶 更多精彩 第一时间直达 概述 首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟. 什 ...
- Cookie、Session、Token、JWT 看一篇就够了
目录 Cookie.Session.Token.JWT 看一篇就够了 什么是认证(Authentication) 什么是授权(Authorization) 什么是凭证(Credentials) 怎么让 ...
- [个人向]超快速了解微信小程序:看这篇就够了!(注册、语言、框架、配额等简要说明)
[个人向]超快速了解微信小程序看这篇就够了+相关简要说明 本文精炼微信小程序开发文档相关内容,旨在对初次接触并准备开发小程序的童鞋(比如自己)提供一个快速了解攻略.其中包括注册相关.语言.框架模式.相 ...
- uiautomation遍历windows所有窗口_万字长文!滑动窗口看这篇就够了!
大家好,我是小浩.今天是小浩算法 "365刷题计划" 滑动窗口系列 - 整合篇.之前给大家讲解过一些滑动窗口的题目,但未作系统整理. 所以我就出了这个整合合集,整合工作中除了保留原 ...
- .NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了
本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core.既 ...
- 面试率 90% 的JS事件循环Event Loop,看这篇就够了!! !
面试率 90% 的JS事件循环Event Loop,看这篇就够了!! ! 事件循环(Event Loop)大家应该并不陌生,它是前端极其重要的基础知识.在平时的讨论或者面试中也是一个非常高频的话题. ...
- Docker入门实战看这篇就够了(最新详细以及踩过的坑)
Docker入门实战看这篇就够了 前言 初识 是什么 容器与虚拟机 能干什么 去哪玩 安装 先决条件 查看自己的内核 安装所需的软件包(支持devicemapper存储类型) 设置镜像的仓库 设置yu ...
- 计算机老师给新生的第一堂课怎么讲,新老师如何讲好第一堂课?看这篇就够了!...
原标题:新老师如何讲好第一堂课?看这篇就够了! 距11.3资格证笔试还有68天啦 新学期即将开始啦!在新生入学的同时,各学校也将迎来一批新教师,为校园注入新鲜的血液. 或许,作为一名新教师,也曾无数次 ...
- python中tkinter模块窗口操作_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)...
本篇博文搬到个人博客:[洪卫の博客](https://sunhwee.com)上面去了,想要获得最佳阅读体验,欢迎前往 [https://sunhwee.com](洪卫の博客), 建议用电脑查看教程文 ...
最新文章
- 图系列|7篇动态时空图网络学习必读的顶会论文
- Android12 Jetpack SplashScreen API总结
- Linux Tomcat安装
- [转]学会使用DB2指令
- php 如何下载,php的包怎么下载
- 恶意软件可以使用风扇噪音盗取数据
- IDEA简单开发java和Spring
- AndroidStudio:设计一个能在图片上涂鸦的程序
- 海康rtsp抓包分析
- IDEA 一直Updating indexes问题解决
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别...
- 佐切的第三天学习分享
- 网址或者app被入侵了怎么办?
- 关于pr文件导入的问题
- 第5次作业+061+陈小兰
- bilibili 视频网址
- 点对点传输现状,镭速高速点对点传输解决方案
- 笔记本连接苹果耳机的方法
- 王者荣耀微信登录服务器无反应,王者荣耀微信为什么登不进 微信无法登录解决办法[图]...
- 网上零售年会召开 微商未来引发热议
热门文章
- 618超值数码好物有哪些?推荐五款入手超值的数码好物
- 第十五届“中国电机工程学会杯”数学建模竞赛
- Java岗:2022最新版的Java面试突击班手册,大厂面试轻松拿捏住!
- 无代码开发是什么,如何选择无代码平台?
- 滴滴2017校园招聘笔试题
- 找感觉的第一个小程序
- FT+LT+ZT+DTFT+DFS+DFT(时域和频域之间的关系)
- 联想集团有限公司董事局主席--柳传志
- 阿里巴巴 c语言 笔试题,阿里巴巴校园招聘笔试题目
- 【vue2静态复古win95简历网页】模仿电脑状态栏实现