百度地图的基本知识与使用

2023-11-04

一、解释

       LBS: LocationBusinessServer基于定义位置的商业服务

二、使用步骤:

1、登录注册,获取秘钥AK

 

2引入百度地图js

<script src="https:ilapi.map.baidu.com/api? v=1.0&&type=webgl&ak=你自己的AK"></script>

3创建地图的容器

<div id="container"></div>

4初始化地图

var map = new BMap.Map("container"")

5创建一个地图中心点

var point new BMap.Point(经度,纬度)

6设置中心点和滚轮缩放

map.enableScrollwheelZoom(true);

map.centerAncZoom(point, 15);鼠标滚轮缩放

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </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=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);
</script>
<ml>

三、地图的事件

1、绘制方法

 1、点

var point = new BmapGL.Marker(point)

2、线

var polyline = new BmapGL.Polyline(点的数组,线的参数)

3、面

var polygon = new BmapGL.Polygon(点的数组,面的参数)

4、圆

var circle = new BmapGL.Circle(点,米半径,圆的参数)

5、标记

new BMapGL.Label(`内容`,{point:位置,offset:new BMapGL.Size(10, -25) }

6、添加叠加

map.addOverlay(点/线/面)

7、移除

map.remveOverLay(点/线/面)

2、添加点及连线

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </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=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);
    var line = []
    var markers = []
    //监听事件
    map.addEventListener("click", e => {
        // 创建点
        var p = new BMapGL.Point(e.latlng.lng, e.latlng.lat);
        // 创建标记
        var m = new BMapGL.Marker(p);
        markers.push(m)
        // 添加标记
        map.addOverlay(m);
        line.push(p)
        // console.log(e);
    })
    map.addEventListener("dblclick", e => {
        // 创建点
        line.push(line[0]);
        // 创建标记
        var polyline = new BMapGL.Polyline(line, { strokeColor: "blue", strokeWeight: 2, strokeOpacity: 0.5, strokeStyle: 'dashed' });
        // 添加标记
        map.addOverlay(polyline);
        line = []
        markers.forEach(item => map.removeOverlay(item));
        markers = []
    })
</script>
<ml>

result

 

3、添加信息窗口

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </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=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);
    var opts = {
        width: 160,     // 信息窗口宽度
        height: 260,    // 信息窗口高度
        title: "Hello"  // 信息窗口标题
    }
    var infoWindow = new BMapGL.InfoWindow(`<img src='https://img1.baidu.com/it/u=1513139652,3813067304&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1667322000&t=d46a4401b2e1827104434d4b707a4ab5' width='180',height='180'>`, opts);  // 创建信息窗口对象
    map.openInfoWindow(infoWindow, map.getCenter());        // 打开信息窗口

    marker.addEventListener("click", e => {
        //单击显示
        map.openInfoWindow(infoWindow, point)
    })


</script>
<ml>

result

 

4、添加地图控件

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </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=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </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 scaleCtrl = new BMapGL.ScaleControl();  // 添加比例尺控件
    map.addControl(scaleCtrl);
    var zoomCtrl = new BMapGL.ZoomControl();  // 添加缩放控件
    map.addControl(zoomCtrl);
    var cityCtrl = new BMapGL.CityListControl();  // 添加城市列表控件
    map.addControl(cityCtrl);
</script>
<ml>

result 

5、添加标签

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </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=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);


    var label = new BMapGL.Label("前端学习基地", {//创建文本标注
        position: point,//设置标注的地理位置
        offset: new BMapGL.Size(0, 0) //设置标注的偏移量
    })
    map.addOverlay(label);//将标注添加到地图中

    var circle = new BMapGL.Circle(point, 1000, {
        strokeColor: 'green'
    })
    map.addOverlay(circle);
    label.setStyle({
        color: "red",
        fontSize: "32px",
        border: "2px solid #f00"
    })


</script>
<ml>

result

 

6、搜素

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        #container {
            width: 800px;
            height: 600px;
        }
    </style>
</head>

<body>
    <input type="" onchange="search(this)" />
    <!-- 准备容器 -->
    <div id="container">

    </div>
</body>
<script type="text/javascript"
    src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=SQ8IFnxBIsbI4eMINne8GZtzK6pBKOMf">
    </script>
<script>
    //初始化地图
    var map = new BMapGL.Map("container")
    //准备一个中心点(经度,维度)
    var point = new BMapGL.Point(113.665, 34.784);
    //设置中心点和缩放级别
    map.centerAndZoom(point, 15);
    //鼠标滚轮缩放
    map.enableScrollWheelZoom(true);

    // 添加一个点
    var marker = new BMapGL.Marker(point);
    // 添加覆盖物
    map.addOverlay(marker);

    var local = new BMapGL.LocalSearch(map, {
        renderOptions: { map: map }
    });
    function search(e) {
        local.search(e.value)
    }


</script>
<ml>

result

四、在vue中使用百度地图 

1. publicindex.htmlscript引入百度地图

2.在组件中定义data

  map: null,//地图

  point: null,//中心点

  marker: null,//标记

  keyword:"",//搜索关键字

  local:null,//搜索控件

<template>
    <div>
        <h1>百度地图</h1>
        <input type="text" v-model.lazy="keyword">
        <div id="map" ref="map"></div>
    </div>
</template>

<script>
export default {
    data() {
        return {
            map: null,
            point: null,
            marker: null,
            keyword: '',
            local: null
        }
    },
    mounted() {
        //为什么第三方api需要加window
        //echarts 还是BMapGL都是挂载到window
        //如果直接使用在当前的组件里面没有导入这个BMapGL会报错,也会出来,js会向上查找
        //基本上第三方组件,都需要在mounted组件渲染完毕后在执行初始化(确保js已经加载完毕
        this.map = new window.BMapGL.Map(this.$refs.map);
        this.point = new window.BMapGL.Point(113.665, 34.784);
        this.map.centerAndZoom(this.point, 15);
        this.map.enableScrollWheelZoom(true)
        // this.map.setHeading(30);
        // this.map.setTilt(13);
        this.marker = new window.BMapGL.Marker(this.point);
        this.map.addOverlay(this.marker);
        this.local = new window.BMapGL.LocalSearch(this.map, {
            renderOptions: { map: this.map }
        });
    },
    watch: {
        keyword: {
            handler() {
                if (this.keyword === '') {
                    this.local.clearResults()
                    this.map.centerAndZoom(this.point, 15)
                } else {
                    this.local.search(this.keyword)
                }
            }
        }
    }
}
</script>

<style>
#map {
    width: 100%;
    height: 80vh;
}
</style>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百度地图的基本知识与使用 的相关文章

  • JDK 文档是语言规范的一部分吗?

    只有一名官员Java语言规范 https docs oracle com javase specs jls se8 html index html所有 Java 实现都必须遵守它 API文档怎么样 所有Java实现都需要遵守吗这个版本 ht
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 如何在 Antlr4 中为零参数函数编写语法

    我的函数具有参数语法 如下面的词法分析器和解析器 MyFunctionsLexer g4 lexer grammar MyFunctionsLexer FUNCTION FUNCTION NAME A Za z0 9 DOT COMMA L
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • GWT - 如何组织项目以拥有多个网页以及它们之间的导航

    我是 GET 的新手 顺便说一句 它给我留下了深刻的印象 并且发现它对于像我这样熟悉 C NET 桌面技术并愿意编写 Web 应用程序的人来说非常有吸引力 我根据 GWT Eclipse 向导生成的示例启动了自己的项目 该项目生成带有面板的
  • org.hibernate.QueryException:无法解析属性:文件名

    我正在使用休眠Criteria从列中获取值filename在我的桌子上contaque recording log 但是当我得到结果时 它抛出异常 org hibernate QueryException 无法解析属性 文件名 com co
  • 来自十六进制代码的 Apache POI XSSFColor

    我想将单元格的前景色设置为十六进制代码中的给定颜色 例如 当我尝试将其设置为红色时 style setFillForegroundColor new XSSFColor Color decode FF0000 getIndexed 无论我在
  • 生成的序列以 1 开头,而不是注释中设置的 1000

    我想请求一些有关 Hibernate 创建的数据库序列的帮助 我有这个注释 下面的代码 在我的实体类中 以便为合作伙伴表提供单独的序列 我希望序列以 1000 开头 因为我在部署期间使用 import sql 将测试数据插入数据库 并且我希
  • 了解joda时间PeriodFormatter

    我以为我明白了 但显然我不明白 你能帮我通过这些单元测试吗 Test public void second assertEquals 00 00 01 OurDateTimeFormatter format 1000 Test public
  • HashMap 值需要不可变吗?

    我知道 HashMap 中的键需要是不可变的 或者至少确保它们的哈希码 hashCode 不会改变或与另一个具有不同状态的对象发生冲突 但是 HashMap中存储的值是否需要与上面相同 为什么或者为什么不 这个想法是能够改变值 例如在其上调
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • Docker 和 Eureka 与 Spring Boot 无法注册客户端

    我有一个使用 Spring Boot Docker Compose Eureka 的非常简单的演示 我的服务器在端口 8671 上运行 具有以下应用程序属性 server port 8761 eureka instance prefer i
  • 如何在 Java 中创建接受多个值的单个注释

    我有一个名为 Retention RetentionPolicy SOURCE Target ElementType METHOD public interface JIRA The Key Bug number JIRA referenc
  • JMenu 中的文本居中

    好吧 我一直在网上寻找有关此问题的帮助 但我尝试的任何方法似乎都不起作用 我想让所有菜单文本都集中在菜单按钮上 当我使用setHorizontalTextPosition JMenu CENTER 没有变化 事实上 无论我使用什么常量 菜单
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

    如何从字符串转换为文本 java lang String to com google appengine api datastore Text 反之亦然 Check Javadoc http code google com appengin
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • 在浏览器刷新中刷新检票面板

    我正在开发一个付费角色系统 一旦用户刷新浏览器 我就需要刷新该页面中可用的统计信息 统计信息应该从数据库中获取并显示 但现在它不能正常工作 因为在页面刷新中 java代码不会被调用 而是使用以前的数据加载缓存的页面 我尝试添加以下代码来修复
  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数

随机推荐

  • Opencv-Python学习(五)

    一 傅里叶变换 傅里叶变换的详细过程及推导可以看一个大佬写的 我这里就不介绍了 链接 傅里叶分析之掐死教程 完整版 更新于2014 06 06 知乎 我这里就介绍一下傅里叶变换的一些概念和opencv中如何实现傅里叶变换 低频 变化缓慢的灰
  • Microsoft Skype产品线梳理

    目录 前言 1 Skype应用程序 2 Skype for Business 3 Skype电话 4 Skype号码 5 Skype连接 总结
  • FPGA:三种基本门电路设计(与门、或门、非门)

    FPGA的设计跟数电是紧密相连的 而我们学习数电时候 学习的第一个内容就是数字逻辑基础 这里面就包含了我们今天要讲解的三种基本的门电路 这里 我们依次讲解过来 1 与门 定义 有两个或多个输入 但只有一个输出 只有在所有输入都是高但电平时才
  • 决策树学习笔记整理

    本文目的 最近一段时间在Coursera上学习Data Analysis 里面有个assignment涉及到了决策树 所以参考了一些决策树方面的资料 现在将学习过程的笔记整理记录于此 作为备忘 算法原理 决策树 Decision Tree
  • GCD(容斥定理)

    Time Limit 6000 3000ms Java Other Memory Limit 32768 32768K Java Other Problem Description Given 5 integers a b c d k yo
  • Python爬虫面试知识

    爬虫知识 网络爬虫又称网页蜘蛛 爬虫即是网络上爬行的蜘蛛 可以将理解为一种在互联网上自动提取网页信息并进行解析数据的程序 网络爬虫主要的分类有 聚焦网络爬虫 增量网络爬虫 通用网络爬虫 深层网络爬虫 Robots协议又称机器人协议 通常在网
  • 单片机学习笔记1--资料下载、环境搭建(基于百问网STM32F103系列教程)

    第1篇 资料下载 环境搭建 第一章 百问网视频体系及学习路线 1 1课程视频变化 2011 2020 百问网录制了10年的Linux视频 2021 1 首次进入单片机领域 发布单片机课程 2 重新录制Linux课程 新芯片 新内核 新路线
  • 【Vue.js学习】三、Vue案例:计数器

    Vue js学习 三 Vue案例 计数器 一 HTML页面 二 Js代码 三 效果 实现计数器 要用到Vue的监听语法 v on click 函数名 声明函数后 在js中写入 methods 进行对函数的控制 下面进行详细解释 一 HTML
  • 成功转行Python工程师,年薪35W+,吐血整理

    这是给转行做Python的小白的参考 无论是从零开始 或者是转行的朋友来说 这都是值得一看的 也是可以作为一种借鉴吧 而且我决定转行IT 互联网 行业 其实理由也很简单 不用动体力 大多数动的是脑力工作 而且现在的互联网趋势很明显 再者看到
  • THINKPHP5.1在windows系统下,安装GateWayWorker

    一 GateWayWorker简单介绍 a GatewayWorker基于Workerman开发的一个项目框架 用于快速开发TCP长连接应用 例如app推送服务端 即时IM服务端 游戏服务端 物联网 智能家居等等 b 如果你的项目是长连接并
  • 中科大、字节新作

    导读 最近 大型语言模型 Large Language Models LLMs 相关研究和落地取得了显著进展 为实现通用人工智能 AGI 迈出了重要步伐 并在各种语言应用中表现卓越 例如 2022 年底发布的 ChatGPT 能够基于在预训
  • 蓝桥杯算法训练VIP-单词接龙

    题目 题目链接 题解 DFS 真没想到居然是暴力搜索 感觉时间复杂度根本不允许啊 大致思路 每次递归都遍历全部字符串 对于每个字符串 枚举要匹配的长度 在此长度下依次匹配原串的尾与遍历到的字符串的头 完全相同说明可以匹配当前长度 就继续深搜
  • 20060122: 差点被偷

    昨天下班回去 车上比较挤 一中年男子掏我左上衣口袋 我转过身去 把口袋拉链拉起来 那男的又凑到我左边 右手拿把伞伸到我口袋前面 为的是挡住我前面坐着的乘客的视线 一个比较年轻的 站在我右后方 左手拿一块纸板挡住 右手开始拉我口袋拉链 我火来
  • MySQL数据库查询练习(子查询分步教程)

    注 数据库表格附录在文末 1 与张三同乡的男生姓名 step1 SELECT snativeplace FROM student WHERE sname 张三 step2 SELECT sname FROM student WHERE ss
  • C++11 智能指针

    此篇均参考C Primer第五版 为了更容易更安全的使用动态内存 C 11提供了两种智能指针 来管理动态对象 智能指针行为类似于常规指针 重要的区别在于它负责自动释放所指向的对象 shared ptr允许多个指针指向同一个对象 unique
  • Android自定义NoticeInfo实现顶部消息提示

    对于顶部消息提示功能 本文采用自定义NoticeInfo类 实现使用时只需要写一行代码 非常方便 一 效果如图所示 二 使用方法 只需要加入下面这8个文件 后面附有源码 即可使用 非常方便 使用示例 三 要加入的8个文件源代码如下 1 No
  • window下移动设备/硬盘报错位置不可用

    移动硬盘指示灯亮 但电脑上不显示 报错信息 无法访问E 参数错误 报错原因 移动硬盘打不开提示参数错误 是因为这个H盘的文件系统内部结构损坏导致的 要怎么恢复里面的数据呢 https jingyan baidu com article cb
  • java 生成条形码_JAVA 生成扫描条形码

    声明 转载为个人学习收藏 如有侵权 请及时联系本人删除 转载地址 https www cnblogs com MariaWang p 10837641 html 条形码是一种可视化 机器可读的数据 这些数据通常描述了携带该条码的物品的相关信
  • WCE下创建MFC的COM对象及使用方法(一)

    转载请标明是引用于 http blog csdn net chenyujing1234 平台 VS2005 MIPSSDK 例子代码 http www rayfile com zh cn files 7020e9b8 7240 11e1 b
  • 百度地图的基本知识与使用

    一 解释 LBS LocationBusinessServer基于定义位置的商业服务 二 使用步骤 1 登录注册 获取秘钥AK 2引入百度地图js 3创建地图的容器 div div 4初始化地图 var map new BMap Map c