• Ajax
  • Ant design
  • Axios-Fetch
  • Avue
  • Browser
  • Canvas
  • CSS
  • Dos-bat
  • Dva
  • Dedecms
  • Echart
  • ElementUI
  • Editors
  • Git
  • GeoServer
  • GIS
  • H5
  • Jquery
  • Java安卓
  • Json
  • Javascript
  • Leaflet
  • Linux
  • Life-Info
  • Mock
  • MongoDB
  • Network
  • NodeJS
  • NPM
  • React
  • 设计运营
  • SEO
  • SVG
  • TypeScript
  • Tools
  • umi
  • uni-APP
  • Vant
  • Vue
  • Windows
  • webpack
  • 位置:OC中文网 > Cesium >

    Cesium 鼠标响应事件交互代码示例大全

    来源:直接复制网 时间:12-13

     Cesium上的entity点击相应事件怎么触发,怎么显示弹窗,怎么处理呢? 以下为一些示例代码

    1. // 获取默认的左键单击处理程序,用于在左键单击时未拾取要素 
    2. var clickHandler = viewer.screenSpaceEventHandler.getInputAction( 
    3. Cesium.ScreenSpaceEventType.LEFT_CLICK 
    4. ); 
    5.   
    6. // 如果支持剪影,则鼠标上方的剪影功能为蓝色,鼠标单击的剪影功能为绿色 
    7. // 如果不支持轮廓,请将特征颜色更改为鼠标悬停时为黄色,单击鼠标时为绿色 
    8. if ( 
    9. Cesium.PostProcessStageLibrary.isSilhouetteSupported(viewer.scene) 
    10. ) { 
    11. // 支持轮廓 
    12. var silhouetteBlue = Cesium.PostProcessStageLibrary.createEdgeDetectionStage(); 
    13. silhouetteBlue.uniforms.color = Cesium.Color.BLUE;//蓝色 
    14. silhouetteBlue.uniforms.length = 0.01; 
    15. silhouetteBlue.selected = []; 
    16.   
    17. var silhouetteGreen = Cesium.PostProcessStageLibrary.createEdgeDetectionStage(); 
    18. silhouetteGreen.uniforms.color = Cesium.Color.LIME; 
    19. silhouetteGreen.uniforms.length = 0.01; 
    20. silhouetteGreen.selected = []; 
    21.   
    22. viewer.scene.postProcessStages.add( 
    23. Cesium.PostProcessStageLibrary.createSilhouetteStage([ 
    24. silhouetteBlue, 
    25. silhouetteGreen, 
    26. ]) 
    27. ); 
    28.   
    29. // 在悬停时勾勒出蓝色的轮廓 
    30. viewer.screenSpaceEventHandler.setInputAction(function onMouseMove( 
    31. movement 
    32. ) { 
    33. // 如果先前高亮显示了某个要素,请撤消该高亮显示 
    34. silhouetteBlue.selected = []; 
    35.   
    36. //点击新要素 
    37. var pickedFeature = viewer.scene.pick(movement.endPosition); 
    38. if (!Cesium.defined(pickedFeature)) { 
    39. nameOverlay.style.display = "none"
    40. return
    41.   
    42. //要素被点击,显示它的覆盖内容 
    43. nameOverlay.style.display = "block"
    44. nameOverlay.style.bottom = 
    45. viewer.canvas.clientHeight - movement.endPosition.y + "px"
    46. nameOverlay.style.left = movement.endPosition.x + "px"
    47. var name = pickedFeature.getProperty("BIN"); 
    48. nameOverlay.textContent = name; 
    49.   
    50. // 突出显示尚未选定的功能 
    51. if (pickedFeature !== selected.feature) { 
    52. silhouetteBlue.selected = [pickedFeature]; 
    53. }, 
    54. Cesium.ScreenSpaceEventType.MOUSE_MOVE); 
    55.   
    56. // 在信息框中显示选定内容和元数据 
    57. viewer.screenSpaceEventHandler.setInputAction(function onLeftClick( 
    58. movement 
    59. ) { 
    60. // 如果先前选择了某个特征,请撤消高亮显示 
    61. silhouetteGreen.selected = []; 
    62.   
    63. // 点击新要素 
    64. var pickedFeature = viewer.scene.pick(movement.position); 
    65. if (!Cesium.defined(pickedFeature)) { 
    66. clickHandler(movement); 
    67. return
    68.   
    69. // Select the feature if it's not already selected 
    70. if (silhouetteGreen.selected[0] === pickedFeature) { 
    71. return
    72.   
    73. // 保存选定要素的原始颜色 
    74. var highlightedFeature = silhouetteBlue.selected[0]; 
    75. if (pickedFeature === highlightedFeature) { 
    76. silhouetteBlue.selected = []; 
    77.   
    78. // 高亮新选择要素 
    79. silhouetteGreen.selected = [pickedFeature]; 
    80.   
    81. // 设置要素信息框描述 
    82. var featureName = pickedFeature.getProperty("name"); 
    83. selectedEntity.name = featureName; 
    84. selectedEntity.description = 
    85. 'Loading <div class="cesium-infoBox-loading"></div>'
    86. viewer.selectedEntity = selectedEntity; 
    87. selectedEntity.description = 
    88. '<table class="cesium-infoBox-defaultTable"><tbody>' + 
    89. "<tr><th>BIN</th><td>" + 
    90. pickedFeature.getProperty("BIN") + 
    91. "</td></tr>" + 
    92. "<tr><th>DOITT ID</th><td>" + 
    93. pickedFeature.getProperty("DOITT_ID") + 
    94. "</td></tr>" + 
    95. "<tr><th>SOURCE ID</th><td>" + 
    96. pickedFeature.getProperty("SOURCE_ID") + 
    97. "</td></tr>" + 
    98. "</tbody></table>"
    99. }, 
    100. Cesium.ScreenSpaceEventType.LEFT_CLICK); 
    101. else { 
    102. // 不支持轮廓。相反,更改特征颜色 
    103. // 有关当前突出显示的功能的信息 
    104. var highlighted = { 
    105. feature: undefined, 
    106. originalColor: new Cesium.Color(), 
    107. }; 
    108.   
    109. // 鼠标移动显示黄色 
    110. viewer.screenSpaceEventHandler.setInputAction(function onMouseMove( 
    111. movement 
    112. ) { 
    113. // 如果先前高亮显示了某个要素,请撤消该高亮显示 
    114. if (Cesium.defined(highlighted.feature)) { 
    115. highlighted.feature.color = highlighted.originalColor; 
    116. highlighted.feature = undefined; 
    117. // 点击新要素 
    118. var pickedFeature = viewer.scene.pick(movement.endPosition); 
    119. if (!Cesium.defined(pickedFeature)) { 
    120. nameOverlay.style.display = "none"
    121. return
    122. // 要素被点击,显示它的覆盖内容 
    123. nameOverlay.style.display = "block"
    124. nameOverlay.style.bottom = 
    125. viewer.canvas.clientHeight - movement.endPosition.y + "px"
    126. nameOverlay.style.left = movement.endPosition.x + "px"
    127. var name = pickedFeature.getProperty("name"); 
    128. if (!Cesium.defined(name)) { 
    129. name = pickedFeature.getProperty("id"); 
    130. nameOverlay.textContent = name; 
    131. // Highlight the feature if it's not already selected. 
    132. if (pickedFeature !== selected.feature) { 
    133. highlighted.feature = pickedFeature; 
    134. Cesium.Color.clone( 
    135. pickedFeature.color, 
    136. highlighted.originalColor 
    137. ); 
    138. pickedFeature.color = Cesium.Color.YELLOW; 
    139. }, 
    140. Cesium.ScreenSpaceEventType.MOUSE_MOVE); 
    141.   
    142. //为所选内容上色并在信息框中显示元数据 
    143. viewer.screenSpaceEventHandler.setInputAction(function onLeftClick( 
    144. movement 
    145. ) { 
    146. // 如果先前选择了某个特征,请撤消高亮显示 
    147. if (Cesium.defined(selected.feature)) { 
    148. selected.feature.color = selected.originalColor; 
    149. selected.feature = undefined; 
    150. // 点击新要素 
    151. var pickedFeature = viewer.scene.pick(movement.position); 
    152. if (!Cesium.defined(pickedFeature)) { 
    153. clickHandler(movement); 
    154. return
    155. // Select the feature if it's not already selected 
    156. if (selected.feature === pickedFeature) { 
    157. return
    158. selected.feature = pickedFeature; 
    159. // Save the selected feature's original color 
    160. if (pickedFeature === highlighted.feature) { 
    161. Cesium.Color.clone( 
    162. highlighted.originalColor, 
    163. selected.originalColor 
    164. ); 
    165. highlighted.feature = undefined; 
    166. else { 
    167. Cesium.Color.clone(pickedFeature.color, selected.originalColor); 
    168. // Highlight newly selected feature 
    169. pickedFeature.color = Cesium.Color.LIME; 
    170. // Set feature infobox description 
    171. var featureName = pickedFeature.getProperty("name"); 
    172. selectedEntity.name = featureName; 
    173. selectedEntity.description = 
    174. 'Loading <div class="cesium-infoBox-loading"></div>'
    175. viewer.selectedEntity = selectedEntity; 
    176. selectedEntity.description = 
    177. '<table class="cesium-infoBox-defaultTable"><tbody>' + 
    178. "<tr><th>BIN</th><td>" + 
    179. pickedFeature.getProperty("BIN") + 
    180. "</td></tr>" + 
    181. "<tr><th>DOITT ID</th><td>" + 
    182. pickedFeature.getProperty("DOITT_ID") + 
    183. "</td></tr>" + 
    184. "<tr><th>SOURCE ID</th><td>" + 
    185. pickedFeature.getProperty("SOURCE_ID") + 
    186. "</td></tr>" + 
    187. "<tr><th>Longitude</th><td>" + 
    188. pickedFeature.getProperty("longitude") + 
    189. "</td></tr>" + 
    190. "<tr><th>Latitude</th><td>" + 
    191. pickedFeature.getProperty("latitude") + 
    192. "</td></tr>" + 
    193. "<tr><th>Height</th><td>" + 
    194. pickedFeature.getProperty("height") + 
    195. "</td></tr>" + 
    196. "<tr><th>Terrain Height (Ellipsoid)</th><td>" + 
    197. pickedFeature.getProperty("TerrainHeight") + 
    198. "</td></tr>" + 
    199. "</tbody></table>"
    200. }, 
    201. Cesium.ScreenSpaceEventType.LEFT_CLICK);