• Html 文本({content)部分,整体展示的DOM由template和Htm属性共同组成
  • template 公共部分外框部分html内容,需要加2处: (1)用于填充html的地方写上{content}标识; (2)关闭按钮加class样式:closeButton。 传空字符串或false时,不用内置模版
  • Tooltip Popup都是继承DivGraphic

divGraphic案例

  • DivGraphic pointerEvents:false// false时不允许拾取和触发任意鼠标事件

Popup文档
Popup.StyleOptions文档

鼠标悬浮Tooltip提示

bindTooltip(content,options)

  1. // 绑定Tooltip
  2. graphic.bindTooltip(this.getInnerHtml, {
  3. direction: "top",
  4. template:`{content}`,//全局公共样式
  5. horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
  6. verticalOrigin: Cesium.VerticalOrigin.CENTER,
  7. offsetX:-155,
  8. offsetY:-150,
  9. }).openTooltip();
  1. getInnerHtml(event) {
  2. const attr = event.graphic.attr;
  3. let content = `<div class="siteWrap" >
  4. <div class="siteTit" >${attr.stationName}</div>
  5. <div class="siteCont">
  6. <div class="siteList">
  7. <div>${attr.waitingNum}人</div>
  8. <div>当前预约人数</div>
  9. </div>
  10. </div>
  11. </div>`;
  12. return content
  13. },
  • 绑定的时候就 openTooltip() 否则每次显示的内容都是绑定的上一次值的Tooltip

  • 解除绑定的时候就 unbindTooltip() - 单个graphic或者整体图层都可以接触绑定

Tooltip点击事件

js自定义dom点击事件是获取挂在window.functiom Popup也有自带的点击事件

  1. graphic.on(mars3d.EventType.tooltipOpen, function (event) {
  2. const container = event.container // popup对应的DOM
  3. console.log("打开了tooltip", container)
  4. const btnDetails = container.querySelector("#btnDetails")
  5. if (btnDetails) {
  6. btnDetails.addEventListener("click", (e) => {
  7. showXQ()
  8. })
  9. }
  10. })
  11. graphic.on(mars3d.EventType.tooltipClose, function (event) {
  12. const container = event.container // tooltip对应的DOM
  13. console.log("移除了tooltip", container)
  14. })

鼠标点击bindPopup提示

  1. graphic.bindPopup(getInnerHtml(content), {
  2. direction: "right",
  3. template:content,
  4. horizontalOrigin: Cesium.HorizontalOrigin.LEFT,
  5. verticalOrigin: Cesium.VerticalOrigin.CENTER,
  6. offsetX:fontSize.f20,
  7. offsetY:-fontSize.f50
  8. }).openPopup()
  • 绑定的时候就 openPopup() 否则每次显示的内容都是绑定的上一次值的Tooltip

  • 解除绑定的时候就 unbindPopup() - 单个graphic或者整体图层都可以接触绑定

Popup自定义dom内部的点击事件

js自定义dom点击事件是获取挂在window.functiom Popup也有自带的点击事件

  1. function getInnerHtml(event) {
  2. // let attr = event.graphic.attr
  3. const inthtml = `<button id="btnDetails">更多</button>`
  4. return inthtml
  5. }
  6. graphic.on(mars3d.EventType.popupOpen, function (event) {
  7. const container = event.container // popup对应的DOM
  8. console.log("打开了popup", container)
  9. const btnDetails = container.querySelector("#btnDetails")
  10. btnDetails.addEventListener("click", (e) => {
  11. })
  12. })
  13. graphic.on(mars3d.EventType.popupClose, function (event) {
  14. const container = event.container // popup对应的DOM
  15. console.log("移除了popup", container)
  16. })

Popup

Popu文档

  1. let rspPopupLayer = new mars3d.layer.GraphicLayer();
  2. this.map.addLayer(rspPopupLayer);
  3. const graphic = new mars3d.graphic.Popup({
  4. position: rspMarkPosition,
  5. style: {
  6. template:`<div style="display: flex;flex-direction: column;align-items: center;">
  7. <div class="ispt_0">${currentRspName}</div>
  8. <div class="ispt_1" ></div>
  9. </div>`,
  10. closeButton: false,
  11. horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
  12. verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
  13. distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 200000), // 按视距距离显示
  14. },
  15. attr: { remark: "示例8" }
  16. })
  17. this.rspPopupLayer.addGraphic(graphic)
  18. setTimeout(() => {
  19. this.rspPopupLayer.clear()
  20. }, 5000)