Arcgis API for javascript 4.x 3D开发笔记(二)

自定义widget的创建

<template>
    <div v-show="visible"
         class="esri-component esri-home esri-widget--button esri-widget"
         role="button"
         tabindex="0"
         :aria-label="title"
         :title="title"
         @click="handleClick">
        <span aria-hidden="true" class="esri-icon"
              :class="loading?'esri-icon-loading-indicator esri-rotating':'esri-icon-organization'"></span>
    </div>
</template>

arcgis api for javascript的自定义widget和vue的组件创建差不多,只是如果要和原生的widget样式一直,需要加入esri-icon、esri-icon-organization、esri-icon-loading-indicator 、esri-rotating等等这些class,要获取这些样式只用右键点击“检查”进入开发者模式粘贴这些需要的样式esri-icon-loading-indicator esri-rotating这两个需要一起使用,这样才会有动态的loading效果

<script lang="ts">
    import {
        Component, Emit, Prop, Vue, Watch,
    } from 'vue-property-decorator';

    @Component({ name: 'SwitchExtrudeQydkWidget' })
    export default class SwitchExtrudeQydkWidget extends Vue {
        @Prop({ type: String, default: '' }) title: string | undefined;

        @Prop({ type: Boolean, default: false }) isVisible: boolean | undefined;

        @Prop({ type: Boolean, default: false }) loading: boolean | undefined;

        visible = false;

        init(activeView: any) {
            if (activeView) {
                activeView.ui.add(this.$el, 'bottom-right');
            }
        }

        @Emit('click')
        handleClick(...e) {
            return e;
        }

        @Watch('isVisible', { immediate: true })
        handleVisibleChange(newVal, oldVal) {
            this.visible = newVal;
        }
    }
</script>

activeView.ui.add(this.$el, 'bottom-right');就是将当前自定义的vue组件,作为arcgis的widget添加到当前view的操作

自定义widget的使用

    <!--企业地块拉伸/隐藏-->JavaScrhtmlipt
        <switch-extrude-qydk-widget ref="switchExtrudeQydkWidget"
                                    @click="handleExtrudeChange"
                                    :is-visible="mapViewType === mapViewTypeEnum['3D']"
                                    :loading="isLoadingMap"
                                    title="企业地块拉伸/隐藏"></switch-extrude-qydk-widget>

       const { switchExtrudeQydkWidget } = this.$refs;
            if (switchExtrudeQydkWidget) {
                (switchExtrudeQydkWidget as any).init(view);
            }

初始化自定义的widget,将widget真正添加到view中(init函数中传入的就是当前的view

自定义widget的效果

v2-cd51e62c78216a7839881130800ebe1a_b.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花姐夫Jun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值