当前位置: 首页 > news >正文

百度地图3D棱柱鼠标事件

百度地图2D API  JavaScript API | 百度地图API SDK

百度地图3D API  jspopularGL | 百度地图API SDK

3D棱柱效果如下

一. 渲染地图

var map = new BMapGL.Map('container', {style: {styleJson: styleJson2}
})
map.centerAndZoom(new BMapGL.Point(116.404, 39.925), 9);
map.enableScrollWheelZoom(true);
map.setTilt(50);

这块加了一个地图样式  是从百度地图 API 上扣的

<script src="http://bj.bcebos.com/v1/mapopen/api-demos/js/mapStyle.js"></script>

二. 获取行政边界点位  并添加鼠标点击事件

var bd1 = new BMapGL.Boundary();
bd1.get('北京市', function (rs) {let count = rs.boundaries.length;for (let i = 0; i < count; i++) {let path = [];let str = rs.boundaries[i].replace(' ', '');let points = str.split(';');for (let j = 0; j < points.length; j++) {let lng = points[j].split(',')[0];let lat = points[j].split(',')[1];path.push(new BMapGL.Point(lng, lat));}// 将所有点位坐标添加到一个数组里面  然后下方代码  将棱柱渲染出来let prism = new BMapGL.Prism(path, 5000, {topFillColor: '#5679ea',topFillOpacity: 0.6,sideFillColor: '#5679ea',sideFillOpacity: 0.9});map.addOverlay(prism);// 绑定鼠标事件var events = ['click', 'mouseover', 'mouseout'];for (let i = 0; i < events.length; i++) {prism.addEventListener(events[i], e => {switch (events[i]) {case 'click':alert('北京市');break;case 'mouseover':e.target.setTopFillColor('#475fab');e.target.setTopFillOpacity(1);break;case 'mouseout':e.target.setTopFillColor('#5679ea');e.target.setTopFillOpacity(0.5);break;}});}}
});

首先 调用了百度地图获取市级行政边界的方法 Boundary() 去获取了北京市的行政边界

获取到是这个样子的 

所以要处理一下 spilt(";") 通过分号处理成另外一个数组

 

长这个样子 

我们平常通过后端获取到的点位格式大概是 [{lat:114, lng: 30}, {lat:114, lng: 30}] 这样的,我们将其循环 new BMapGL.Point(lng, lat) 添加到地图点位当中 然后 push 到一个数组里 储存起来

例如  path.push(new BMapGL.Point(lng, lat));

打印一下 path

下方就可以直接把这个 path 里的点位渲染成3D棱柱图了

let prism = new BMapGL.Prism(path, 5000, {topFillColor: '#5679ea',topFillOpacity: 0.6,sideFillColor: '#5679ea',sideFillOpacity: 0.9
});
map.addOverlay(prism);

鼠标事件 

// 绑定鼠标事件
var events = ['click', 'mouseover', 'mouseout'];
for (let i = 0; i < events.length; i++) {prism.addEventListener(events[i], e => {switch (events[i]) {case 'click':alert('北京市');break;case 'mouseover':e.target.setTopFillColor('#475fab');e.target.setTopFillOpacity(1);break;case 'mouseout':e.target.setTopFillColor('#5679ea');e.target.setTopFillOpacity(0.5);break;}});
}

如果只需要点击事件

prism.addEventListener('click', e => {alert('北京市');
});

http://www.lryc.cn/news/159842.html

相关文章:

  • PHP调用java class 类实现文件签名
  • 信号和槽机制
  • 计算机视觉领域经典模型汇总(2023.09.08
  • 华为云云耀云服务器L实例评测|在 Centos Docker 中使用Nginx部署Vue项目
  • 高频知识汇总 |【计算机网络】面试题汇总(万字长文通俗易懂)
  • 6.Flask-APScheduler定时任务框架
  • 电脑入门:路由器访问控制列表基础知识
  • 目标检测笔记(十四): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
  • windows系统edge浏览器退出账户后还能免密登录的解决方式
  • 在Spring Boot项目中使用JPA
  • 探讨Socks5代理IP在跨境电商与网络游戏中的网络安全应用
  • T检验的前提条件|独立性|方差齐性|随机抽样
  • 【GO语言基础】变量常量
  • C++QT day3
  • AI时代的较量,MixTrust能否略胜一筹?
  • Ubuntu22.04 安装 MongoDB 7.0
  • 【日志技术——Logback日志框架】
  • mysql存储过程和函数
  • 【HDFS】Hadoop-RPC:客户端侧通过Client.Connection#sendRpcRequest方法发送RPC序列化数据
  • Java基于 SpringBoot 的车辆充电桩系统
  • excel表导出
  • YOLOv8 快速入门
  • HJ48 从单向链表中删除指定值的节点
  • Java缓存理解
  • MHA高可用及故障切换
  • 1000元订金?华为折叠屏手机MateX5今日开始预订,售价尚未公布
  • Golang编写客户端SDK,并开源发布包到GitHub,供其他项目import使用
  • 手写Mybatis:第10章-使用策略模式,调用参数处理器
  • pair 是 C++ 标准库中的一个模板类,用于存储两个对象的组合
  • More Effective C++学习笔记(5)