0.0.3 • Published 2 years ago

angular-cesium-popup v0.0.3

Weekly downloads
-
License
-
Repository
github
Last release
2 years ago

angular-cesium-popup

封装了一个 cesium 的 popup 组件。

使用方式

(1)安装组件

npm install angular-cesium-popup --save

(2)样式引入

在全局样式文件:style.scss or style.less 中引入 popup 样式文件

    @import "./node_modules/angular-cesium-popup/src/lib/popupStyle.less";

(3)component 使用

...
// 引入你的popup要展示的内容组件
import { PopuptestComponent } from './components/popuptest/popuptest.component';
import { CesiumPopupService, ComponentUtilService } from 'angular-cesium-popup';
...

export class yourComponent {

    constructor(
        private popup: CesiumPopupService,
        private componentUtilService: ComponentUtilService,
    ) { 
        ...
    }

    /**
     * 添加popup到cesium地图
     *
     * @param {*} viewer cesium实例对象
     * @memberof AppComponent
     */
    addPopupToMap(viewer: any): void{
        ...
        // params中的所有的值, 会在你的组件PopuptestComponent中找到对应的变量名,并赋上对于的值
        // 举例:如果你的params = {aaa:'11', bbb:'12'}; 那么PopuptestComponent这个组件,在你初始化构建完成后就必须声明出来aaa变量和bbb变量。所以一般建议params中只传入id参数,在组件内部的OnInit事件中写请求详情接口内容的操作。
         const dom = this.componentUtilService.getComponentElement(PopuptestComponent, params);
         // tip:addTo(viewer)函数调用必须写在最后面
         this.popup.setPosition(position).setDomContent(dom).addTo(viewer);
        ...
    }
}

参数介绍

参 数 名类 型示 例 值
domComponent框架中的组件:Component
vieweranyviewer = new Cesium.Viewer({...})
params{key: any}params = {name:'111',id:'222'}
positionanyhandler.setInputAction((event: any) => { position = this.viewer.scene.pickPosition(event.position); }, Cesium.ScreenSpaceEventType.LEFT_CLICK) // 左键点击事件

相关函数介绍

$\color{#000000}{ComponentUtilService相关使用函数介绍:}$

getComponentElement(components: Type<unknown>, params: { [key: string]: any }): 获取组件Dom元素

getComponentInstance(): 获取组件实例

setComponentGlobalVariable(variableName: string, value: any): 设置组件内部的"全局"变量

destroy(): 销毁组件实例

$\color{#000000}{CesiumPopupService相关使用函数介绍:}$

addClassName(className: string): 给popup的最外面的边框DOM元素增加一个class类

removeClass(className: string): popup的最外面的边框DOM元素移除一个class类

setTitle(title: string): 设置popup框的标题内容

setOffset(offset: [number, number]): 设置popup的偏移量, 默认0,0

setPosition(position: any): 设置popup定位的位置

setHTML(html: string): 设置popup组件的展示内容-1:参数为构架的div标签字符串

setDomContent(html: HTMLDivElement): 设置popup组件的展示内容-2:参数为组件的dom元素。(tip:使用这个就不要使用setTitle了,自己在自定义组件中写title把)

remove: (): 移除popup框

参考图

alt 参考图-1

参考文献

文献1:参考的github地址

文献2:实现方案参照的博客

文献3:在线效果

鸣谢

这里特别鸣谢@JerckyLY,本工具代码构建是在其源代码的基础上,方便其更适应与框架级别的代码风格,而做了部分调整。整体原理和其相同。再次感谢!

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago