• cesium api放大缩小地图


    方法缩小地图封装api
     

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>Cesium Zoom APItitle>
    7. <style>
    8. #cesiumContainer {
    9. height: 100vh;
    10. margin: 0;
    11. overflow: hidden;
    12. }
    13. #buttonCss {
    14. position: absolute;
    15. top: 10px;
    16. left: 10px;
    17. padding: 10px;
    18. cursor: pointer;
    19. background-color: #fff;
    20. border: 1px solid #ccc;
    21. border-radius: 4px;
    22. font-size: 14px;
    23. }
    24. style>
    25. head>
    26. <body>
    27. <div id="cesiumContainer">div>
    28. <div id="buttonCss">
    29. <button id="zoomInButton">Zoom Inbutton>
    30. <button id="zoomOutButton">Zoom Outbutton>
    31. div>
    32. <script src="https://cesium.com/downloads/cesiumjs/releases/1.80/Build/Cesium/Cesium.js">script>
    33. <link rel="stylesheet"
    34. href="https://cesium.com/downloads/cesiumjs/releases/1.80/Build/Cesium/Widgets/widgets.css" />
    35. <script>
    36. const viewer = new Cesium.Viewer('cesiumContainer');
    37. document.getElementById('zoomInButton').addEventListener('click', () => {
    38. zoomMap(-0.5);
    39. });
    40. document.getElementById('zoomOutButton').addEventListener('click', () => {
    41. zoomMap(0.5);
    42. });
    43. function zoomMap(direction) {
    44. const camera = viewer.camera;
    45. const position = camera.positionWC.clone();
    46. const directionVector = camera.directionWC.clone();
    47. const height = viewer.scene.globe.ellipsoid.cartesianToCartographic(position).height;
    48. // 根据相机高度调整缩放的比例
    49. // const scale = Math.ceil(height / 1000.0);
    50. // console.log(scale,'scale');
    51. // let dire = scale>1?scale*direction * 100:direction * 100
    52. // console.log(dire,'dire');
    53. const scale = Math.ceil(height / 1.0);
    54. let dire = scale * direction
    55. // 方向矢量与缩放量的乘积
    56. const zoomVector = Cesium.Cartesian3.multiplyByScalar(directionVector, dire, new Cesium.Cartesian3());
    57. // 新位置为当前位置加上缩放后的矢量
    58. const newPosition = Cesium.Cartesian3.add(position, zoomVector, new Cesium.Cartesian3());
    59. const heading = camera.heading;
    60. const pitch = camera.pitch;
    61. camera.flyTo({
    62. destination: newPosition,
    63. orientation: {
    64. heading: heading,
    65. pitch: pitch,
    66. },
    67. duration: 0.5, // 调整飞行动画的持续时间
    68. });
    69. }
    70. script>
    71. body>
    72. html>

  • 相关阅读:
    halcon系列(2):超级盒子(Hyperboxes)
    Debian11之稳定版本Jenkins安装
    PHP旅游管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页
    用于微小目标检测的上下文扩展和特征细化网络
    谷歌云计算技术基础架构,谷歌卷积神经网络
    操作系统备考学习 day5(2.2.5 - 2.3.1)
    Ubuntu下安装microk8s用代理解决无法拉取镜像问题
    Databend 在 MinIO 环境使用copy 命令 | 新手篇(3)
    十二、 Mysql - 主从复制 - 半同步复制
    maven中的依赖管理
  • 原文地址:https://blog.csdn.net/songJunFeng1/article/details/134418740