@vuemap/vue-amap
Version:
高德地图vue3版本封装
82 lines (79 loc) • 2.34 kB
JavaScript
import { defineComponent, provide, openBlock, createElementBlock, renderSlot } from 'vue';
import '../../../../mixins/index.mjs';
import { buildProps } from '../../../../utils/buildHelper.mjs';
import { provideKey, useRegister } from '../../../../mixins/useRegister.mjs';
var script = /* @__PURE__ */ defineComponent({
...{
name: "ElAmapLayerLabels",
inheritAttrs: false
},
__name: "Labels",
props: buildProps({
zooms: {
type: Array
},
// 支持的缩放级别范围,默认范围 [2-30]
opacity: {
type: Number
},
// 透明度,默认 1
collision: {
type: Boolean,
default: true
},
// 标注层内的标注是否避让
allowCollision: {
type: Boolean,
default: false
}
// 标注层内的标注是否允许其它标注层对它避让
}),
emits: ["init"],
setup(__props, { expose: __expose, emit: __emit }) {
const needInitComponents = [];
const provideData = {
$amapComponent: void 0,
addChildComponent(cb) {
needInitComponents.push(cb);
},
isDestroy: false
};
provide(provideKey, provideData);
const emits = __emit;
let $amapComponent;
const { $$getInstance, parentInstance } = useRegister((options, parentComponent) => {
return new Promise((resolve) => {
$amapComponent = new AMap.LabelsLayer(options);
parentComponent.add($amapComponent);
provideData.$amapComponent = $amapComponent;
resolve($amapComponent);
});
}, {
emits,
needInitComponents,
provideData,
destroyComponent() {
if ($amapComponent && (parentInstance == null ? void 0 : parentInstance.$amapComponent)) {
if (!(parentInstance == null ? void 0 : parentInstance.isDestroy)) {
parentInstance == null ? void 0 : parentInstance.$amapComponent.removeLayer($amapComponent);
}
$amapComponent = null;
}
}
});
const $$add = (markers) => {
$amapComponent.add(markers);
};
__expose({
$$getInstance,
$$add
});
return (_ctx, _cache) => {
return openBlock(), createElementBlock("div", null, [
renderSlot(_ctx.$slots, "default")
]);
};
}
});
export { script as default };
//# sourceMappingURL=Labels.vue2.mjs.map