• Cesium对三维模型进行查询并弹框展示信息


    一、简介

    Cesium三维模型3dtiles,然后添加鼠标交互事件进行查询,弹出信息框。

    二、示例代码

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <link rel="stylesheet" href="./css/common.css">
    6. <title>
    7. 三维模型查询
    8. title>
    9. <script src="./js/config.js">script>
    10. <script src="./scripts/vue.min.js">script>
    11. <script type="text/javascript" src="../anov-gis-sdk/index.js">script>
    12. <link rel="stylesheet" href="../anov-gis-sdk/index.css">
    13. head>
    14. <body>
    15. <div id="cesiumContainer">
    16. div>
    17. body>
    18. html>
    19. <script>
    20. var app = new Vue({
    21. el: '#cesiumContainer',
    22. mounted() {
    23. // 初始化
    24. window.viewer = new ANOVGIS.Viewer("cesiumContainer", {
    25. vrButton: false,
    26. baseLayerPicker: true,
    27. fullscreenButton: true,
    28. homeButton: true,
    29. sceneModePicker: true,
    30. navigationHelpButton: true
    31. });
    32. ANOVGIS.WidgetsControl.showAllControls({
    33. });
    34. //影像
    35. var baselayer = ANOVGIS.ImageryLayerFactory.createImageryLayer(
    36. ANOVGIS.ImageryType.TDT, {
    37. style: "img",
    38. key: globalConfig.tdtKey
    39. }
    40. );
    41. viewer.addBaseImageryLayer(baselayer);
    42. // 三维模型加载
    43. let layer = new ANOVGIS.TilesetLayer();
    44. viewer.addLayer(layer);
    45. let tileset = new ANOVGIS.Tileset({
    46. url: 'http://172.16.223.165/gis-share/beijingchouxi/tileset.json',
    47. highlight: {//鼠标滑过样式
    48. color: "#ff0000"
    49. },
    50. selectedHighlight:{//点击选中效果
    51. color: "rgba(255,0.0,255,0.8)"
    52. }
    53. })
    54. // 设置模型样式
    55. const style = new ANOVGIS.TilesetStyle()
    56. style.color = {
    57. conditions: [
    58. ['Number(${floor}) >= 40', 'rgba(45, 0, 75, 0.5)'],
    59. ['Number(${floor}) >= 30', 'rgb(102, 71, 151)'],
    60. ['Number(${floor}) >= 20', 'rgb(170, 162, 204)'],
    61. ['Number(${floor}) >= 10', 'rgb(248, 176, 87)'],
    62. ['Number(${floor}) >= 5', 'rgb(198, 106, 11)'],
    63. ['true', 'rgb(127, 59, 8)'],
    64. ],
    65. }
    66. tileset.setStyle(style)
    67. layer.addGraphic(tileset);
    68. //绑定点击弹框
    69. layer.bindPopup({
    70. viewer: viewer,
    71. showTitle: true,
    72. useDefaultHtmlTemplate: true,//用默认模板
    73. });
    74. layer.addEventListener(ANOVGIS.MouseEventType.CLICK, (e) => {
    75. let infoData = {
    76. title: e.feature.getProperty('name1'),
    77. fieldsMap: [
    78. {
    79. nameC: '名称:',
    80. value: e.feature.getProperty('name1')
    81. }, {
    82. nameC: '楼层:',
    83. value: e.feature.getProperty('floor')
    84. }]
    85. }
    86. layer.popup.show(e.position, infoData);
    87. console.log(e);
    88. })
    89. // 绑定鼠标MOUSE_MOVE事件
    90. layer.bindTooltip({
    91. viewer: viewer,
    92. showTitle: true,
    93. offsetY: '-10',
    94. useDefaultHtmlTemplate: true,//用默认模板
    95. });
    96. layer.addEventListener(ANOVGIS.MouseEventType.MOUSE_MOVE, (e) => {
    97. let infoData = {
    98. title: e.feature.getProperty('name1'),
    99. fieldsMap: [
    100. {
    101. nameC: '名称:',
    102. value: e.feature.getProperty('name1')
    103. }, {
    104. nameC: '楼层:',
    105. value: e.feature.getProperty('floor')
    106. }]
    107. }
    108. layer.tooltip.show(e.position, infoData);
    109. })
    110. // 定位
    111. viewer.flyToTileset(tileset,2,0.5,-35);
    112. }
    113. });
    114. script>

  • 相关阅读:
    【超详细】手把手教你STM32上报温湿度到腾讯云
    2022世界VR产业大会圆满收官,酷雷曼惊艳亮相!
    【Leetcode刷题Python】300. 最长递增子序列
    导航app为什么知道还有几秒变绿灯?
    Java处理数据成为树状结构
    6.串口、时钟
    MySQL——命令行客户端的字符集问题
    对数据排序
    学信息系统项目管理师第4版系列28_组织级项目管理和量化项目管理
    [创业之路-120] :全程图解:软件研发人员如何从企业的顶层看软件产品研发?
  • 原文地址:https://blog.csdn.net/u014556081/article/details/132971036