tg-map-vue3 4.1.5 → 4.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tg-map.cjs +2 -0
- package/dist/tg-map.cjs.map +1 -0
- package/dist/tg-map.css +1 -0
- package/dist/tg-map.js +1440 -0
- package/dist/tg-map.js.map +1 -0
- package/package.json +4 -4
- package/dist/assets/404-D34FYbNB.js +0 -2
- package/dist/assets/404-D34FYbNB.js.map +0 -1
- package/dist/assets/ControlDemo-BvElkDpq.js +0 -2
- package/dist/assets/ControlDemo-BvElkDpq.js.map +0 -1
- package/dist/assets/CssPositionDemo-DbSCIYVw.js +0 -2
- package/dist/assets/CssPositionDemo-DbSCIYVw.js.map +0 -1
- package/dist/assets/HeatmapDemo-CKEH0W3g.js +0 -2
- package/dist/assets/HeatmapDemo-CKEH0W3g.js.map +0 -1
- package/dist/assets/InfoDemo-BSp_czCk.js +0 -2
- package/dist/assets/InfoDemo-BSp_czCk.js.map +0 -1
- package/dist/assets/LifecycleBugDemo-Bldh5GGg.js +0 -2
- package/dist/assets/LifecycleBugDemo-Bldh5GGg.js.map +0 -1
- package/dist/assets/Main-DGU58I8w.js +0 -2
- package/dist/assets/Main-DGU58I8w.js.map +0 -1
- package/dist/assets/MapDemo-Crw8VrAs.vue +0 -155
- package/dist/assets/MapDemo-Z4UTQNq5.js +0 -2
- package/dist/assets/MapDemo-Z4UTQNq5.js.map +0 -1
- package/dist/assets/MapTypeDemo-bv5WPraY.js +0 -2
- package/dist/assets/MapTypeDemo-bv5WPraY.js.map +0 -1
- package/dist/assets/MapUrlsDemo-D0075XSg.js +0 -2
- package/dist/assets/MapUrlsDemo-D0075XSg.js.map +0 -1
- package/dist/assets/MarkerDemo-D9YK-9Js.js +0 -2
- package/dist/assets/MarkerDemo-D9YK-9Js.js.map +0 -1
- package/dist/assets/MarkerDemo-D_C5RDUy.vue +0 -200
- package/dist/assets/MultiMapDemo-D-BWUDR1.js +0 -2
- package/dist/assets/MultiMapDemo-D-BWUDR1.js.map +0 -1
- package/dist/assets/OverlayDemo-BtSawKbN.js +0 -2
- package/dist/assets/OverlayDemo-BtSawKbN.js.map +0 -1
- package/dist/assets/PlaceDemo-DswQxAPt.js +0 -2
- package/dist/assets/PlaceDemo-DswQxAPt.js.map +0 -1
- package/dist/assets/ReactiveDemo-D5H5d9dh.js +0 -2
- package/dist/assets/ReactiveDemo-D5H5d9dh.js.map +0 -1
- package/dist/assets/ShapeDemo-CX9Jwa7y.js +0 -2
- package/dist/assets/ShapeDemo-CX9Jwa7y.js.map +0 -1
- package/dist/assets/ShapeDemo-t5GXEmrA.vue +0 -162
- package/dist/assets/TalksDemo-D0da45jA.js +0 -2
- package/dist/assets/TalksDemo-D0da45jA.js.map +0 -1
- package/dist/assets/V2Demo-vX7YCqCc.js +0 -2
- package/dist/assets/V2Demo-vX7YCqCc.js.map +0 -1
- package/dist/assets/index-C6IOkH7Y.css +0 -1
- package/dist/assets/index-DkG0ZlIx.js +0 -352
- package/dist/assets/index-DkG0ZlIx.js.map +0 -1
- package/dist/index.html +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tg-map.js","sources":["../src/utils/vue-utils.ts","../src/components/map-mixin.ts","../src/components/TgMap.vue","../src/components/TgMapWidget.vue","../src/components/controls/TgCustomControl.vue","../src/components/controls/TgMapTypeControl.vue","../src/components/controls/TgScaleControl.vue","../src/utils/hooks.ts","../src/components/map-hooks.ts","../src/components/controls/TgStreetViewControl.vue","../src/components/controls/TgZoomControl.vue","../src/components/extra/TgHeatmap.vue","../src/components/extra/TgMarkerClusterer.vue","../src/components/layers/TgTrafficLayer.vue","../src/components/overlays/TgCircle.vue","../src/components/overlays/TgElementOverlay.vue","../src/components/overlays/TgMarker.vue","../src/components/overlays/TgInfoBox.vue","../src/components/overlays/TgInfoWindow.vue","../src/components/overlays/TgLabel.vue","../src/components/overlays/TgPolygon.vue","../src/components/overlays/TgPolyline.vue","../src/components/overlays/TgRectangle.vue","../src/utils/lifecycle-log.ts","../src/components/index.ts"],"sourcesContent":["import { noop } from 'tg-commons'\nimport { Strings, type AbstractConstructor, type EventCallback, type KeysMatching, type StringEnumLike, type StringEnumValue, type Thing } from 'tg-map-core'\nimport {\n computed,\n createCommentVNode,\n type Component,\n type ComponentOptions,\n type ComponentPublicInstance,\n type ComputedRef,\n type Prop,\n type PropType,\n type Ref,\n type RendererElement,\n type RendererNode,\n type Slots,\n type VNode,\n type WritableComputedOptions,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type reactive,\n} from 'vue'\n/** 组件选项中的hook名 */\nexport type VueHookName = ExcludeSubtype<\n KeysMatching<OmitStartsWith<RemoveIndex<ComponentOptions>, '_'>, { (): void } | undefined>,\n 'serverPrefetch' | 'emits' | 'computed' | 'extends' | 'methods' | 'call' | undefined\n>\n\nexport type VueHookFunction = (this: ComponentPublicInstance) => void\n\n/**\n * 模仿Vue的计算属性的写法\n * @see ComputedOptions\n */\nexport type Property<T> = T | { (): T } | { get(): T, set?(value: T): void }\n\n/**\n * ## Vue2\n * 和typed()联合使用, 写成: `props: typed<Props<Options>>({...})`, 可以将`Options`作为属性的类型声明,\n * ### 注意\n * 1. 对于`Options`中可选的属性, 漏了VSCode不会报错...要小心\n * 2. `...`中理论上来说只要写Vue的纯js式的类型验证信息(Boolean/Number/String/Object/...)就行了, 并且还有ts的类型检查\n * 3. 对于`Options`中可选的`boolean`属性, 若将类型验证信息写为`Boolean`时, 该属性的默认值并不是`undefined`而是`false`, 这和它的类型声明(`boolean | undefined`)不匹配, 推荐写成`optionalProp(Boolean)`\n * 4. 因为存在上述特殊情况, 推荐使用{@link requiredProp},{@link optionalProp}等快捷方法写类型验证信息, 方法的传入参数直接写Vue的纯js式的类型验证信息, 就行了\n *\n * ## Vue3\n * 需要用`props: {...} satisfies Props<Options>`替代`typed()`, 防止{@link NotNullProp}被Vue看成必选的属性\n * */\nexport type Props<T> = {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n [K in keyof T]-?: T[K] extends {} ? NotNullProp<T[K]> : Prop<Exclude<T[K], undefined>>\n}\n/** 表示一个非空的Prop, `required`为true 或者 设置了`default`的{@link Prop}, 才是非空的Prop */\ntype NotNullProp<T = any, D = T> = { type: PropType<T> } & ({ required: true } | { default: D | (() => D) })\n\nexport function stringEnumProp<E extends StringEnumLike>(enumObject: E, defaultValue: E[keyof E]): { type: PropType<StringEnumValue<E>>, default: E[keyof E] }\nexport function stringEnumProp<E extends StringEnumLike>(enumObject: E): { type: PropType<StringEnumValue<E>> }\n/**\n * 注意: 由于使用了`Object.values(enumObject)`来获取所有枚举值\n * - 若enumObject为数字枚举, 获取出来的值会同时包含枚举名和枚举值, 故不支持\n * - 若enumObject同时是命名空间名, 获取出来的值会包含命名空间上的方法, 应当避免\n *\n * @param enumObject 枚举对象\n * @param defaultValue 默认值\n * @see https://frontendsociety.com/using-a-typescript-interfaces-and-types-as-a-prop-type-in-vuejs-508ab3f83480\n * */\nexport function stringEnumProp<E extends StringEnumLike>(enumObject: E, defaultValue?: E[keyof E]): Prop<StringEnumValue<E>> {\n return {\n type: String as any,\n default: defaultValue,\n validator: (value: E[keyof E]) => Object.values(enumObject).includes(value),\n }\n}\n\nexport function stringUnionPropFromValues<T extends string>(values: readonly T[], defaultValue: T): { type: PropType<T[][number]>, default: T }\nexport function stringUnionPropFromValues<T extends string>(values: readonly T[]): { type: PropType<T[][number]> }\n/** 使用方法重载, 声明`是否提供defaultValue`和`返回值是否可undefined`的关系_(:3」∠)_ */\nexport function stringUnionPropFromValues<T extends string>(values: readonly T[], defaultValue?: T): Prop<T[][number]> {\n return {\n type: String as any,\n default: defaultValue,\n validator: (value: T) => values.includes(value),\n }\n}\n\nexport function requiredProp<T>(type: PropType<T>): { type: PropType<T>, required: true } {\n return {\n type: type,\n required: true,\n }\n}\n\nexport function optionalProp<T>(type: PropType<T>, defaultValue: T | (() => T)): { type: PropType<T>, default: T }\nexport function optionalProp<T>(type: PropType<T>): { type: PropType<T> }\nexport function optionalProp<T>(type: PropType<T>, defaultValue?: T | (() => T)): Prop<T> {\n return {\n type: type,\n default: defaultValue,\n }\n}\n\n/**\n * 保存在this上的属性\n * @param defaultValues 属性的默认值\n *\n * @deprecated Vue3中已经不支持`cache: false`的计算属性, 使用setup中返回普通的值替代\n */\nexport function computedSaveOnThis<T>(defaultValues: { [K in keyof T]: T[K] }): { [K in keyof T]: WritableComputedOptions<T[K]> } {\n const accessors: any = {}\n Object.entries(defaultValues).forEach(([key, defaultValue]) => {\n const name = `__${key}`\n accessors[key] = {\n get() {\n const value = this[name]\n return value === undefined ? defaultValue : value\n },\n set(value: any) {\n this[name] = value\n },\n // Vue3已经不支持该属性\n // cache: false\n }\n })\n return accessors\n}\n\n// 这个对象是可以共享的~~\nconst sharedPropertyDefinition: PropertyDescriptor = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop,\n}\n\n/**\n * 模仿Vue的计算属性的写法, 将方法转换成属性\n * @deprecated 在Vue2时用来将provide的方法转换成属性, 方便使用, Vue3中不生效, 故废弃\n */\nexport function createPropertyObject(obj: any): any {\n Object.keys(obj).forEach(key => {\n const value = obj[key]\n let redefined = false\n if (typeof value === 'function') {\n sharedPropertyDefinition.get = value\n sharedPropertyDefinition.set = noop\n redefined = true\n } else if (typeof value === 'object' && typeof value.get === 'function') {\n sharedPropertyDefinition.get = value.get\n sharedPropertyDefinition.set = value.set\n redefined = true\n }\n if (redefined) {\n obj[key] = Object.defineProperty(obj, key, sharedPropertyDefinition)\n }\n })\n return obj\n}\n\n/**\n * 相比{@link createPropertyObject}增加类型信息\n * @see createPropertyObject\n * @deprecated Vue3中没用\n * */\nexport function createPropertyObjectTyped<T>(obj: { [K in keyof T]: Property<T[K]> }): T {\n return createPropertyObject(obj)\n}\n\n/**\n * 创建空节点\n *\n * Vue2中使用`this._e()`创建空节点: https://github.com/vuejs/vue/blob/b6247fc9d7442c50d60ccf366a7cb183a4d02129/src/core/instance/render-helpers/index.js#L28\n *\n * Vue3中等价的实现是{@link createCommentVNode}: https://github.com/vuejs/core/blob/650f5c26f464505d9e865bdb0eafb24350859528/packages/runtime-core/src/compat/instance.ts#L162\n */\nexport function createEmptyVNode(): VNode {\n return createCommentVNode()\n}\n/**\n * @see https://github.com/vuejs/vue/blob/43b98fe25151b0b6bacd36f3ee27c5d61add5fdb/packages/weex-vue-framework/factory.js/#L2906\n * */\nexport function callHook(vm: ComponentPublicInstance, hookName: VueHookName) {\n // $options中的每个hook函数被合并成一个数组了\n const hooks: Array<VueHookFunction> | undefined = (vm.$options as any)[hookName]\n if (!hooks) {\n return\n }\n for (const hook of hooks) {\n hook.call(vm)\n }\n}\n\n/**\n * {@link import('./mapped-types.ts').safeAsComponent}\n * @deprecated Vue3已经不能遍历子组件的实例了, 所以这个方法目前没用\n */\nexport function findByComponentType<T extends Component & AbstractConstructor>(\n arr: ComponentPublicInstance[],\n component: T,\n): InstanceType<T> | undefined {\n for (const item of arr) {\n // TO-DO: 2023/03/16 ipcjs 有没有更好的判断组件实例的方式?\n // => 目前没找到\n if (item.$options.name === component.name) {\n return item as InstanceType<T>\n }\n }\n return undefined\n}\n\n/**\n * 通过构造slots内容的方式, 提取出slots中对应{@link component}的VNode, {@link VNode.props}就是当前给组件设置的属性值\n *\n * 注意, 该方法并无法获取到{@link component}的实例\n *\n * @see https://stackoverflow.com/questions/64154002/vue-3-how-to-get-information-about-children\n */\nexport function extractVNodeFromSlotsByComponent<Props>(slots: Slots, component: ComponentOptions<Props>) {\n if (!slots.default) return undefined\n\n const nodeList = slots.default()\n for (const node of nodeList) {\n if ((node?.type as Component).name === component.name) {\n return node as VNode<RendererNode, RendererElement, Props>\n }\n }\n return undefined\n}\n\n/**\n * Vue3中 class/style/未声明的事件/未声明的属性 都会集合到`this.$attrs`中\n * 默认情况下(`inheritAttrs`为true), 将被透传给组件的根节点\n *\n * 而Vue2, `this.$attrs`值包含 未声明的属性, 所有事件放到了`this.$listeners`中\n *\n * 这里模仿Vue2的行为, 从{@link attrs}中拆分出未声明的事件, 方便将他们透传给地图的对象\n * 同时若传入{@link props}, 也会从它里面拆分出 声明的事件类型的属性\n *\n * ## 如何给事件添加类型信息\n *\n * - 声明在`emits`中的事件, 会给emit方法添加类型信息, 但没办法在运行时判断是否有被设置\n * - 声明在`props`中的事件, 不会.................. , 但可以通过读取`this.$props`判断是否被设置\n *\n * 所有我们最终选择用{@link EventProps}在`props`中声明事件, 同时用{@link EventEmits}在`emits`上声明事件的类型,\n * 达到既有类型信息, 又能判断是否存在的效果, 写法如下:\n * ```\n * {\n * props: {...} satisfies EventProps<TgMapEmits>,\n * emits: undefined as any as EventEmits<TgMapEmits>,\n * }\n * ```\n *\n * ## 参考\n * - https://cn.vuejs.org/guide/components/attrs.html#disabling-attribute-inheritance\n * - https://v3-migration.vuejs.org/zh/breaking-changes/listeners-removed.html\n * - https://eslint.vuejs.org/rules/require-explicit-emits.html#options\n */\nexport function splitAttrs(attrs: Record<string, unknown>, props?: Record<string, unknown>) {\n const listeners: Record<string, unknown> = {}\n const binds: Record<string, unknown> = {}\n const listenerProps: Record<string, unknown> = {}\n Object.keys(attrs).forEach(key => {\n if (key.startsWith('on')) {\n listeners[Strings.pascal2kebab(key.substring(2))] = attrs[key]\n } else {\n binds[key] = attrs[key]\n }\n })\n if (props) {\n Object.keys(props).forEach(key => {\n if (key.startsWith('on')) {\n listenerProps[Strings.pascal2kebab(key.substring(2))] = props[key]\n }\n })\n }\n return {\n /** class/style/未声明的属性 等 */\n binds,\n /** 未声明的事件 */\n listeners,\n /** 声明在`props`中的事件 */\n listenerProps,\n }\n}\n\n/** 响应式的{@link splitAttrs} */\nexport function useSplittedAttrs(attrs: Record<string, unknown>, props?: Record<string, unknown>) {\n return computed(() => splitAttrs(attrs, props))\n}\n\n/**\n * 事件类型的属性\n * @see splitAttrs\n * */\nexport type EventProps<Emits> = Emits extends string\n // 转换 简单的String Union, 类型使用Function, 是为了简便, 省得写详细的类型信息\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n ? { [K in Emits as `on${Capitalize<K>}`]: Prop<Function> }\n // 转换 事件名=>事件类型的映射\n : {\n [K in keyof Emits as K extends string ? `on${Capitalize<K>}` : never]: Prop<EventCallback<Emits[K]>>\n }\n\n/**\n * 用来声明事件的类型信息\n * @see splitAttrs\n * */\nexport type EventEmits<T> = {\n [K in keyof T]: (event: T[K]) => boolean\n}\n\n/** 给事件类型的属性标注类型 */\nexport function eventProp<E = any>(): Prop<EventCallback<E>> {\n return Function as PropType<EventCallback<E>>\n}\n\nexport const useEventLogMethods = () => {\n let prevType: Thing | undefined\n let prevTime: number | undefined\n /**\n * @event 一般来说传{@link Tg.Event}对象, 但传其他对象也不会报错\n */\n function eventLog(event: Thing | null | undefined) {\n console.log(event)\n prevType = event && (event as any).type\n prevTime = Date.now()\n }\n /** @see eventLog */\n function eventLogLess(this: any, event: Thing | null | undefined) {\n if ((event && (event as any).type) !== prevType || Date.now() - (prevTime ?? 0) > 1000) {\n eventLog(event)\n }\n }\n return { eventLog, eventLogLess }\n}\n\n/**\n * 值可能是Ref的对象\n * 可以用来给{@link reactive}的参数做类型约束\n * */\nexport type MaybeWrapRefs<T> = {\n [P in keyof T]: Ref<T[P]> | T[P] | ComputedRef<T[P]>\n}\n\n/** 判断{@link instance}是否是{@link component}的实例 */\nexport function isComponentByType<C extends Component & AbstractConstructor>(\n instance: ComponentPublicInstance | null,\n component: C,\n): instance is InstanceType<C> {\n // TODO: 2023/03/15 ipcjs 看有没有其他更好的方式判断组件类型\n return instance?.$options.name === component.name\n}\n\n/** 安全转换组件类型, 若不能转换会返回`undefined` */\nexport function safeAsComponent<C extends Component & AbstractConstructor>(\n instance: ComponentPublicInstance | null,\n component: C,\n): InstanceType<C> | undefined {\n return isComponentByType(instance, component) ? instance : undefined\n}\n\n/**\n * 查找[startInstance, endComponent)之间的第一个类型为{@link component}的父组件\n * @param component 查找的组件\n * @param startInstance 查找的开始实例, 包含\n * @param endComponent 查找的终止组件, 不包含\n * @returns\n */\nexport function findAncestorComponentByType<C extends Component & AbstractConstructor>(\n component: C,\n startInstance: ComponentPublicInstance | null,\n endComponent?: Component & AbstractConstructor,\n): InstanceType<C> | undefined {\n let instance = startInstance\n while (instance) {\n if (isComponentByType(instance, component)) {\n return instance\n } else if (endComponent && isComponentByType(instance, endComponent)) {\n return undefined\n } else {\n instance = instance.$parent\n }\n }\n return undefined\n}\n","import type { BaseMap } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { callHook, createEmptyVNode } from '../utils/vue-utils'\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { useTgMapInner } from './map-hooks'\n\nexport const MIXIN_MAP_NAME = '$map'\nexport const MIXIN_HOOK_CREATE = 'onCreate'\nexport const MIXIN_HOOK_DESTROY = 'onDestroy'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n /** 混合了MapMixin的Vue才会有该属性 */\n [MIXIN_MAP_NAME]: BaseMap,\n /** 混合了MapMixin的Vue才会有该属性, 会依次调用onDestroy + onCreate, 你应该在这两个hook中分别实现 移除 和 创建并添加 覆盖物的逻辑 */\n recreate: () => void,\n }\n\n interface ComponentCustomOptions {\n [MIXIN_HOOK_CREATE]?(): void\n [MIXIN_HOOK_DESTROY]?(): void\n }\n}\n\n/** @deprecated 使用{@link useTgMapInner}替代 */\nconst MapMixin = defineComponent({\n inject: [MIXIN_MAP_NAME],\n mounted() {\n // children先执行, parent后执行\n // parent中可以读取到this.$children, 参见: TgMarkerClusterer\n callHook(this, MIXIN_HOOK_CREATE)\n },\n beforeUnmount() {\n // parent先执行, children后执行\n callHook(this, MIXIN_HOOK_DESTROY)\n },\n methods: {\n recreate() {\n callHook(this, MIXIN_HOOK_DESTROY)\n callHook(this, MIXIN_HOOK_CREATE)\n },\n },\n render() {\n return createEmptyVNode()\n },\n})\n\nexport default MapMixin\n","<template>\n <div class=\"tg-map\" v-bind=\"attrs.binds\">\n <div\n ref=\"map\"\n :class=\"{\n 'tg-map__map': true,\n [`tg-map__map--hide-logo-${type}`]: hideLogo\n }\"\n ></div>\n <div v-if=\"false\" style=\"position:absolute;right:0px;top:0px;\">\n props:{{ propsJson }}\n </div>\n <template v-if=\"map\">\n <slot></slot>\n </template>\n <slot name=\"overlay\"></slot>\n </div>\n</template>\n<script lang=\"ts\">\nimport { typed } from 'tg-commons'\nimport { bindEvents, BuildInMapTypeId, GestureHandlingOptions, InfoWindowModeValues, LatLng, loadCachedMap, MapType, Objects, TgMapFactory, TgMapType, unwrapStringEnumValue, type AbstractMap, type AbstractMapEventMap, type BaseMap, type MapOptions, type MapStyle, type StringEnumValue, type WrapStringEnumValue } from 'tg-map-core'\nimport { computed, defineComponent, markRaw, watch, type PropType } from 'vue'\nimport { eventProp, optionalProp, requiredProp, stringEnumProp, stringUnionPropFromValues, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../utils/vue-utils'\nimport { MIXIN_MAP_NAME } from './map-mixin'\n\ntype TgMapEmits = {\n load: AbstractMap,\n error: any,\n 'update:center': LatLng,\n 'update:current-center': LatLng,\n 'update:zoom': number,\n 'update:map-type': MapType,\n 'update:map-type-id': string,\n 'update:last-center': LatLng,\n}\n\nexport const tgMapProps = {\n /** type没做响应式, 但外部可以把type作为tg-map的key, 让type修改时完全重建tg-map */\n type: stringEnumProp(TgMapType, TgMapType.google),\n /**\n * 当对该属性使用双向绑定时, 改变center将触发update:center又反过来触发center改变, 最终导致无限循环...\n * 当前通过setCenter()时判断center是否有改变来避免该问题, 但为了避免可能存在的问题, 另外设计了如下机制:\n * - :center-sync-delay=\"300\": 延时同步center, 防止center的值更新过快\n * - :current-center.sync=\"currentCenter\": 实时获取center的值\n * - :last-center.sync=\"center\": 获取tg-map销毁时的最后的center的值, 使用这种方式可以做到type切换时保留中心点位置\n * @see AbstractMapEventMap.center-changed\n */\n center: requiredProp(LatLng),\n /**\n * 同步center的延时\n * @default 300\n * @see center\n */\n centerSyncDelay: optionalProp(Number, 300),\n /**\n * 仅用来获取center的值, 需要设置center的值请使用`center`属性\n * @see center\n * @deprecated 用的太少, 故maptalks未实现该属性, 要实时获取中心点, 请将{@link centerSyncDelay}设为0\n */\n currentCenter: optionalProp(LatLng),\n /**\n * 仅用于获取tg-map销毁时的最后的center的值\n * @see center\n * @deprecated 用的太少, 故maptalks未实现该属性\n */\n lastCenter: optionalProp(LatLng),\n zoom: requiredProp(Number),\n /**\n * 该属性不会响应式更新, 要让它立即生效, 请参考{@link file://./../views/map/InfoDemo.vue#L3}\n * @see MapOptions.infoWindowMode\n */\n infoWindowMode: stringUnionPropFromValues(InfoWindowModeValues),\n gestureHandling: stringEnumProp(GestureHandlingOptions),\n fractionalZoom: optionalProp(Boolean),\n minZoom: optionalProp(Number),\n maxZoom: optionalProp(Number),\n mapStyle: optionalProp(Object as PropType<MapStyle>),\n mapTypeId: stringEnumProp(BuildInMapTypeId),\n /** 地图类型对象, 优先级比mapTypeId高 */\n mapType: optionalProp(Object),\n hideLogo: optionalProp(Boolean),\n onLoad: eventProp(),\n 'onUpdate:center': eventProp(),\n 'onUpdate:current-center': eventProp(),\n 'onUpdate:last-center': eventProp(),\n 'onUpdate:map-type': eventProp(),\n 'onUpdate:map-type-id': eventProp(),\n 'onUpdate:zoom': eventProp(),\n onError: eventProp(),\n} satisfies Props<WrapStringEnumValue<Omit<MapOptions, 'buildInMapTypeId'>, {\n gestureHandling: typeof GestureHandlingOptions,\n}> & {\n type: StringEnumValue<typeof TgMapType>,\n currentCenter?: LatLng,\n lastCenter?: LatLng,\n centerSyncDelay: number,\n mapTypeId?: StringEnumValue<typeof BuildInMapTypeId>,\n mapType?: MapType\n hideLogo?: boolean\n}> & EventProps<TgMapEmits>\n\nexport type TgMapEventEmits = EventEmits<AbstractMapEventMap & TgMapEmits>\n\nexport default defineComponent({\n name: 'tg-map',\n provide() {\n return {\n [MIXIN_MAP_NAME]: computed(() => this.map),\n }\n },\n inheritAttrs: false,\n props: tgMapProps,\n /** 声明事件的类型信息, 详见: {@link splitAttrs} */\n emits: undefined as any as TgMapEventEmits,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n centerSyncTimeoutId: undefined as TimeoutId | undefined,\n }\n },\n data() {\n return {\n map: typed<BaseMap>(),\n isDestroyed: false,\n }\n },\n computed: {\n propsJson() {\n return Objects.toJsonSafely(this.$props)\n },\n },\n watch: {\n gestureHandling(value?: StringEnumValue<typeof GestureHandlingOptions>) {\n if (value) {\n this.map?.setGestureHandling(unwrapStringEnumValue(value, GestureHandlingOptions))\n }\n },\n minZoom(value) {\n this.map?.setMinZoom(value)\n },\n maxZoom(value) {\n this.map?.setMaxZoom(value)\n },\n mapStyle(value?: MapStyle) {\n this.map?.setMapStyle(value)\n },\n mapTypeId(value?: StringEnumValue<typeof BuildInMapTypeId>) {\n if (value) {\n this.map?.setBuildInMapTypeId(unwrapStringEnumValue(value, BuildInMapTypeId))\n }\n },\n mapType(value?: MapType) {\n this.map?.setMapType(value ?? MapType.NORMAL)\n },\n hideLogo(value?: boolean) {\n this.map?.setHideLogo(value ?? false)\n },\n fractionalZoom(value?: boolean) {\n this.map?.setFractionalZoom(value ?? false)\n },\n },\n async mounted() {\n // type的值需要局部化, 防止外部修改\n const type = unwrapStringEnumValue(this.type, TgMapType)\n try {\n await loadCachedMap(type)\n } catch (e) {\n this.$emit('error', e)\n return\n }\n if (this.isDestroyed) {\n console.warn(`tg-map(type=${type})已销毁, 不需要继续执行`)\n return\n }\n // options不要直接传this, 因为createMap方法内部会修改options...\n const map = TgMapFactory.createMap(type, this.$refs.map as HTMLElement, /* options: */{\n center: this.center,\n zoom: this.zoom,\n infoWindowMode: this.infoWindowMode,\n gestureHandling: unwrapStringEnumValue(this.gestureHandling, GestureHandlingOptions),\n minZoom: this.minZoom,\n maxZoom: this.maxZoom,\n mapStyle: this.mapStyle,\n buildInMapTypeId: unwrapStringEnumValue(this.mapTypeId, BuildInMapTypeId),\n hideLogo: this.hideLogo,\n fractionalZoom: this.fractionalZoom,\n })\n // map是复杂对象, 不需要转换成响应式对象\n this.map = markRaw(map)\n if (this.mapType) {\n map.setMapType(this.mapType)\n }\n\n // 未声明ready事件, 所以需要从attrs.listeners中查找是否存在\n if ('ready' in this.attrs.listeners) {\n console.error('地图载入完成的事件已经从ready改为了load, 请手动修改')\n }\n bindEvents(this.attrs.listeners, map, /* excludes: */['load'])\n // 需要先发送load(载入完成)事件, 保证外部能够获取到map对象\n this.$emit('load', map)\n\n // Baidu地图的setZoom/Center是区分顺序的, 若同时修改它们, 必须先setZoom再setCenter, 否则中心点会出现偏移\n // Google地图没这个问题\n // 为了规避该问题, 同时监听它们两个, 并按顺序执行set方法\n watch([\n () => this.zoom,\n () => this.center, //\n ], ([zoom, center], [oldZoom, oldCenter]) => {\n if (zoom !== oldZoom) {\n import.meta.env.DEV && console.debug('<tg-map> setZoom', center)\n map.setZoom(zoom)\n }\n if (center !== oldCenter) {\n const currentCenter = map.getCenter()\n if (!currentCenter.equals(center)) {\n import.meta.env.DEV && console.debug('<tg-map> setCenter', center)\n map.setCenter(center)\n }\n }\n })\n\n // 处理v-model(双向绑定)\n if (this.attrs.listenerProps['update:center']) {\n const updateCenter = () => this.$emit('update:center', map.getCenter())\n map.addEventListener('center-changed', () => {\n if (this.centerSyncDelay > 0) {\n clearTimeout(this.centerSyncTimeoutId)\n this.centerSyncTimeoutId = setTimeout(updateCenter, this.centerSyncDelay)\n } else {\n updateCenter()\n }\n })\n }\n if (this.attrs.listenerProps['update:current-center']) {\n // 初始值也得emit出去\n this.$emit('update:current-center', this.center)\n map.addEventListener('center-changed', () => {\n this.$emit('update:current-center', map.getCenter())\n })\n }\n if (this.attrs.listenerProps['update:zoom']) {\n map.addEventListener('zoom-changed', () => {\n this.$emit('update:zoom', map.getZoom())\n })\n }\n const isUpdateMapType = this.attrs.listenerProps['update:map-type']\n const isUpdateMapTypeId = this.attrs.listenerProps['update:map-type-id']\n if (isUpdateMapType || isUpdateMapTypeId) {\n map.addEventListener('map-type-changed', () => {\n const mapType = map.getMapType()\n isUpdateMapType && this.$emit('update:map-type', mapType)\n isUpdateMapTypeId && this.$emit('update:map-type-id', mapType.id)\n })\n }\n },\n unmounted() {\n this.isDestroyed = true\n if (this.map) {\n if (this.attrs.listenerProps['update:last-center']) {\n this.$emit('update:last-center', this.map.getCenter())\n }\n if (this.attrs.listenerProps['update:center']) {\n clearTimeout(this.centerSyncTimeoutId)\n // 最终的值一定要更新出去, 保证切换地图时center的位置能够保持\n this.$emit('update:center', this.map.getCenter())\n }\n }\n },\n methods: {\n },\n})\n</script>\n\n<style lang=\"scss\">\n.tg-map {\n height: 100%;\n position: relative;\n\n &__map {\n width: 100%;\n height: 100%;\n\n &--hide-logo-google {\n .gm-style {\n // 隐藏logo\n a[target=\"_blank\"]:has(>div>img) {\n display: none !important;\n }\n\n // 隐藏右下角的Keyboard shortcuts/Terms of Use等\n &>div:last-child>div:last-child>div {\n display: none;\n }\n }\n }\n\n &--hide-logo-baidu {\n // 隐藏logo\n div.anchorBL>a[target=\"_blank\"]>img {\n display: none;\n }\n\n // 隐藏左下角的版权信息\n div.BMap_cpyCtrl {\n display: none;\n }\n }\n }\n}\n</style>\n","<template>\n <div :class=\"$options.name\" :style=\"{ left: dimen(left), top: dimen(topValue), right: dimen(right), bottom: dimen(bottom) }\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { dimen } from 'tg-map-core'\nimport { defineComponent } from 'vue'\n/** TgMap上的Widget, 只是对绝对布局进行简单的封装 */\nexport default defineComponent({\n name: 'tg-map-widget',\n props: {\n left: {\n type: [Number, String],\n default: null,\n },\n top: {\n type: [Number, String],\n default: null,\n },\n right: {\n type: [Number, String],\n default: null,\n },\n bottom: {\n type: [Number, String],\n default: null,\n },\n },\n computed: {\n topValue() {\n // 防止默认看不到组件\n return this.top == null && this.bottom == null ? 0 : this.top\n },\n },\n methods: {\n dimen,\n },\n})\n</script>\n<style lang=\"scss\">\n.tg-map-widget {\n position: absolute;\n}\n</style>\n","<template>\n <div :class=\"$options.name\">\n <slot />\n </div>\n</template>\n<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { ControlPosition, CustomControl, type StringEnumValue, unwrapStringEnumValue } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { type Props, safeAsComponent, stringEnumProp } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\nimport TgMap from '../TgMap.vue'\n\nexport default defineComponent({\n name: 'tg-custom-control',\n mixins: [MapMixin],\n props: {\n position: stringEnumProp(ControlPosition, ControlPosition.RIGHT_BOTTOM),\n } satisfies Props<{\n position: StringEnumValue<typeof ControlPosition>\n }>,\n setup() {\n return {\n control: lateinit<CustomControl>(),\n }\n },\n watch: {\n position() {\n this.recreate()\n },\n },\n onCreate() {\n if (!safeAsComponent(this.$parent, TgMap)) {\n console.warn('请将tg-custom-control放到tg-map中')\n }\n const { $el } = this\n const C = class extends CustomControl {\n onCreateElement() {\n return $el as HTMLElement\n }\n }\n this.control = new C(unwrapStringEnumValue(this.position, ControlPosition))\n this.$map.addCustomControl(this.control)\n },\n onDestroy() {\n this.$map.removeCustomControl(this.control)\n },\n})\n</script>\n<style lang=\"scss\">\n// 当作为tg-map的直接child时不显示\n.tg-map > .tg-custom-control {\n display: none;\n}\n</style>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { ControlPosition, type MapTypeControl, type MapTypeControlOptions, MapTypeControlType, unwrapStringEnumValue, type WrapStringEnumValue } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { optionalProp, type Props, stringEnumProp } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\n\nexport default defineComponent({\n name: 'tg-map-type-control',\n mixins: [MapMixin],\n props: {\n position: stringEnumProp(ControlPosition, ControlPosition.TOP_LEFT),\n type: stringEnumProp(MapTypeControlType),\n mapTypes: optionalProp(Array as any),\n } satisfies Props<WrapStringEnumValue<MapTypeControlOptions, {\n position: typeof ControlPosition,\n type: typeof MapTypeControlType\n }>>,\n setup() {\n return {\n control: lateinit<MapTypeControl>(),\n }\n },\n watch: {\n position(value) {\n this.control.setPosition(value)\n },\n type() {\n this.recreate()\n },\n mapTypes: {\n handler() {\n this.recreate()\n },\n deep: true,\n },\n },\n onCreate() {\n this.control = this.$map.createMapTypeControl(unwrapStringEnumValue(this))\n this.$map.addControl(this.control)\n },\n onDestroy() {\n this.$map.removeControl(this.control)\n },\n})\n\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { ControlPosition, type ScaleControl, type ScaleControlOptions, type WrapStringEnumValue, unwrapStringEnumValue } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { type Props, stringEnumProp } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\nexport default defineComponent({\n name: 'tg-scale-control',\n mixins: [MapMixin],\n props: {\n position: stringEnumProp(ControlPosition, ControlPosition.BOTTOM_RIGHT),\n } satisfies Props<WrapStringEnumValue<ScaleControlOptions, {\n position: typeof ControlPosition\n }>>,\n setup() {\n return {\n control: lateinit<ScaleControl>(),\n }\n },\n watch: {\n position(value) {\n this.control.setPosition(value)\n },\n },\n onCreate() {\n this.control = this.$map.createScaleControl(unwrapStringEnumValue(this))\n this.$map.addControl(this.control)\n },\n onDestroy() {\n this.$map.removeControl(this.control)\n },\n})\n\n</script>\n","import { path } from 'tg-commons'\nimport { customRef, getCurrentInstance, toRaw, watch } from 'vue'\n\n/** 获取当前组件的名字 */\nexport function useComponentName(): string | undefined {\n const type = getCurrentInstance()?.type\n let name = type?.name ?? type?.__name\n if (!name) {\n const file = type?.__file\n if (file) {\n name = path.basename(file, '.vue')\n }\n }\n return name\n}\n\n/**\n * 将v-model转换成Ref变量, 并防止递归调用\n */\nexport function useLocalModel<P extends object, K extends keyof P & string, Name extends string>(\n props: P,\n key: K,\n emit: (name: Name, ...args: any[]) => void,\n) {\n return customRef<P[K]>((track, trigger) => {\n let local = props[key]\n watch(() => props[key], (v) => {\n if (local === toRaw(v)) {\n // 防止emit出去的值, 被设置回来\n return\n }\n local = v\n trigger()\n })\n\n return {\n get: () => {\n track()\n return local\n },\n set: (v) => {\n local = v\n emit(`update:${key}` as Name, v)\n },\n }\n })\n}\n","import { throwError } from 'tg-commons'\nimport type { AbstractMap } from 'tg-map-core'\nimport { inject, onBeforeUnmount, onMounted, type Ref } from 'vue'\nimport { useComponentName } from '../utils/hooks'\nimport { MIXIN_HOOK_CREATE, MIXIN_HOOK_DESTROY, MIXIN_MAP_NAME } from './map-mixin'\n\n/** 作为Vue3下, `MapMixin`的替代 */\nexport function useTgMapInner<MAP extends AbstractMap = AbstractMap>() {\n const mapRef = inject<Ref<MAP | undefined>>(MIXIN_MAP_NAME)\n let onCreate: VoidFunction | undefined\n let onDestroy: VoidFunction | undefined\n if (mapRef == null) throwError(`<${useComponentName() || 'unknown'}>必须作为<tg-map>的子代组件`)\n\n return {\n mapRef,\n /** 读取map对象, 只要放在<tg-map>里面的组件(除#overlay插槽外)都能够立即读取到map对象 */\n get map() {\n return mapRef.value ?? throwError('map尚未初始化')\n },\n /** 地图元素创建回调 */\n [MIXIN_HOOK_CREATE](hook: VoidFunction) {\n onMounted(hook)\n if (onCreate) throwError(`${MIXIN_HOOK_CREATE}只能调用一次`)\n onCreate = hook\n },\n /** 地图元素销毁回调 */\n [MIXIN_HOOK_DESTROY](hook: VoidFunction) {\n onBeforeUnmount(hook)\n if (onDestroy) throwError(`${MIXIN_HOOK_DESTROY}只能调用一次`)\n onDestroy = hook\n },\n /** 重新创建地图元素 */\n recreate() {\n onDestroy?.()\n onCreate?.()\n },\n }\n}\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { ControlPosition, unwrapStringEnumValue, type BaseMap, type StreetViewControl, type StreetViewControlOptions, type WrapStringEnumValue } from 'tg-map-core'\nimport { defineComponent, watch } from 'vue'\nimport { createEmptyVNode, stringEnumProp, type Props } from '../../utils/vue-utils'\nimport { useTgMapInner } from '../map-hooks'\n/**\n * 街景控件, 当前只有google支持\n * */\nexport default defineComponent({\n name: 'tg-street-view-control',\n props: {\n position: stringEnumProp(ControlPosition, ControlPosition.RIGHT_BOTTOM),\n } satisfies Props<WrapStringEnumValue<StreetViewControlOptions, {\n position: typeof ControlPosition,\n }>>,\n setup(props) {\n let control = lateinit<StreetViewControl>()\n\n const { map, onCreate, onDestroy } = useTgMapInner<BaseMap>()\n\n onCreate(() => {\n control = map.createStreetViewControl(unwrapStringEnumValue(props))\n map.addControl(control)\n })\n\n onDestroy(() => {\n map.removeControl(control)\n })\n\n watch(() => props.position, (value) => {\n control.setPosition(unwrapStringEnumValue(value, ControlPosition))\n })\n return createEmptyVNode\n },\n})\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { ControlPosition, unwrapStringEnumValue, type BaseMap, type WrapStringEnumValue, type ZoomControl, type ZoomControlOptions } from 'tg-map-core'\nimport { defineComponent, watch } from 'vue'\nimport { createEmptyVNode, optionalProp, stringEnumProp, type Props } from '../../utils/vue-utils'\nimport { useTgMapInner } from '../map-hooks'\n\nexport default defineComponent({\n name: 'tg-zoom-control',\n props: {\n position: stringEnumProp(ControlPosition, ControlPosition.RIGHT_BOTTOM),\n showZoomLevel: optionalProp(Boolean),\n } satisfies Props<WrapStringEnumValue<ZoomControlOptions, {\n position: typeof ControlPosition,\n }>>,\n setup(props) {\n let control = lateinit<ZoomControl>()\n\n const { map, onCreate, onDestroy } = useTgMapInner<BaseMap>()\n\n onCreate(() => {\n control = map.createZoomControl(unwrapStringEnumValue(props))\n map.addControl(control)\n })\n\n onDestroy(() => {\n map.removeControl(control)\n })\n\n watch(() => props.position, (value) => {\n control.setPosition(unwrapStringEnumValue(value, ControlPosition))\n })\n watch(() => props.showZoomLevel, (value) => {\n control.setShowZoomLevel(value ?? true)\n })\n return createEmptyVNode\n },\n})\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { BaseMap, Heatmap, type HeatmapOptions } from 'tg-map-core'\nimport { defineComponent, watch } from 'vue'\nimport { createEmptyVNode, optionalProp, requiredProp, type Props } from '../../utils/vue-utils'\nimport { useTgMapInner } from '../map-hooks'\n\nexport default defineComponent({\n name: 'tg-heatmap',\n props: {\n maxIntensity: optionalProp(Number),\n gradient: optionalProp(Object),\n opacity: optionalProp(Number),\n radius: optionalProp(Number),\n data: requiredProp(Array as any),\n } satisfies Props<HeatmapOptions>,\n setup(props) {\n const { map, onCreate, onDestroy } = useTgMapInner<BaseMap>()\n let heatmap = lateinit<Heatmap>()\n\n onCreate(() => {\n heatmap = map.createHeatmap(props)\n })\n onDestroy(() => {\n heatmap.remove()\n })\n\n watch(() => props.data, (v) => heatmap.setData(v))\n watch(\n [() => props.maxIntensity, () => props.gradient, () => props.opacity, () => props.radius],\n () => heatmap.setOptions(props),\n )\n\n return createEmptyVNode\n },\n})\n</script>\n","<template>\n <div :class=\"$options.name\">\n <slot />\n </div>\n</template>\n<script lang=\"ts\">\nimport { Arrays, lateinit, typed } from 'tg-commons'\nimport type { MarkerClusterer, MarkerClustererOptions, MarkerOverlay } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { type Props, optionalProp } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\nconst TgMarkerClusterer = defineComponent({\n name: 'tg-marker-clusterer',\n mixins: [MapMixin],\n // markers从this.$children中读取, 故需要省略(Omit)\n props: {\n gridSize: optionalProp(Number),\n maxZoom: optionalProp(Number),\n minClusterSize: optionalProp(Number),\n averageCenter: optionalProp(Boolean),\n styles: optionalProp(Array as any),\n stylesIndexCalculator: optionalProp(Function as any),\n zIndex: optionalProp(Number),\n } satisfies Props<Omit<MarkerClustererOptions, 'markers'>>,\n setup() {\n return {\n clusterer: lateinit<MarkerClusterer>(),\n markers: typed<MarkerOverlay[]>([]),\n }\n },\n watch: {\n gridSize() {\n this.recreate()\n },\n maxZoom() {\n this.recreate()\n },\n minClusterSize() {\n this.recreate()\n },\n averageCenter() {\n this.recreate()\n },\n styles: {\n handler() {\n this.recreate()\n },\n deep: true,\n },\n stylesIndexCalculator() {\n this.recreate()\n },\n zIndex() {\n this.recreate()\n },\n },\n onCreate() {\n // console.log('TgMarkerClusterer.onCreate', this.markers)\n this.clusterer = this.$map.createMarkerClusterer(this)\n },\n onDestroy() {\n this.clusterer.clearMarkers(true)\n },\n methods: {\n /** TgMarker有可能在该组件未初始化之前调用, 需要通过该方法判断 */\n isInitiated(): boolean {\n return this.clusterer != null\n },\n onAddMarker(marker: MarkerOverlay) {\n this.markers.push(marker)\n if (this.isInitiated()) {\n // TODO: 优化大量marker时的添加移除逻辑\n this.clusterer.addMarker(marker)\n }\n },\n onRemoveMarker(marker: MarkerOverlay) {\n if (this.isInitiated()) {\n this.clusterer.removeMarker(marker)\n }\n Arrays.remove(this.markers, marker)\n },\n },\n})\n/** TgMarkerClusterer作为构造器, 创建的Vue实例类型 */\ntype TgMarkerClusterer = InstanceType<typeof TgMarkerClusterer>\nexport default TgMarkerClusterer\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { TrafficLayer } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport MapMixin from '../map-mixin'\nexport default defineComponent({\n name: 'tg-traffic-layer',\n mixins: [MapMixin],\n // 请直接使用v-if来控制它的显隐\n // 没有属性时, 写`{}`类型推断会有问题, 故注释掉\n // props: {} satisfies Props<{}>,\n setup() {\n return {\n layer: lateinit<TrafficLayer>(),\n }\n },\n watch: {\n\n },\n onCreate() {\n this.layer = new TrafficLayer()\n this.$map.addLayer(this.layer)\n },\n onDestroy() {\n this.$map.removeLayer(this.layer)\n },\n})\n\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, LatLng, type CircleEventMap, type CircleOptions, type CircleOverlay } from 'tg-map-core'\nimport { defineComponent, toRaw } from 'vue'\nimport { eventProp, optionalProp, requiredProp, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\ntype TgCircleEmits = {\n 'update:center': LatLng,\n 'update:radius': number,\n}\nexport default defineComponent({\n name: 'tg-circle',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: {\n center: requiredProp(LatLng),\n radius: requiredProp(Number),\n clickable: optionalProp(Boolean),\n editable: optionalProp(Boolean),\n strokeColor: optionalProp(String),\n strokeOpacity: optionalProp(Number),\n strokeWeight: optionalProp(Number),\n visible: optionalProp(Boolean),\n zIndex: optionalProp(Number),\n fillColor: optionalProp(String),\n fillOpacity: optionalProp(Number),\n 'onUpdate:center': eventProp(),\n 'onUpdate:radius': eventProp(),\n } satisfies Props<CircleOptions> & EventProps<TgCircleEmits>,\n emits: undefined as any as EventEmits<CircleEventMap & TgCircleEmits>,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n overlay: lateinit<CircleOverlay>(),\n emittedRadius: undefined as number | undefined,\n emittedCenter: undefined as LatLng | undefined,\n }\n },\n watch: {\n center(value) {\n if (this.emittedCenter != null) {\n const center = this.emittedCenter\n this.emittedCenter = undefined\n if (center === toRaw(value)) {\n // 防止emit出的center被设置回来\n return\n }\n }\n this.overlay.setCenter(value)\n },\n radius(value) {\n if (this.emittedRadius != null) {\n const radius = this.emittedRadius\n this.emittedRadius = undefined\n if (radius === value) {\n // 防止emit出的radius被设置回来\n return\n }\n }\n this.overlay.setRadius(value)\n },\n clickable() {\n this.recreate()\n },\n editable(value) {\n this.overlay.setEditable(value)\n },\n strokeColor(value) {\n this.overlay.setStrokeColor(value)\n },\n strokeOpacity(value) {\n this.overlay.setStrokeOpacity(value)\n },\n strokeWeight(value) {\n this.overlay.setStrokeWeight(value)\n },\n fillColor(value) {\n this.overlay.setFillColor(value)\n },\n fillOpacity(value) {\n this.overlay.setFillOpacity(value)\n },\n visible(value) {\n this.overlay.setVisible(value)\n },\n zIndex(value) {\n this.overlay.setZIndex(value)\n },\n },\n onCreate() {\n this.overlay = this.$map.createCircle(this)\n this.$map.addOverlay(this.overlay)\n bindEvents(this.attrs.listeners, this.overlay)\n if (this.attrs.listenerProps['update:center']) {\n this.overlay.addEventListener('center-changed', () => {\n this.$emit('update:center', this.emittedCenter = this.overlay.getCenter())\n })\n }\n if (this.attrs.listenerProps['update:radius']) {\n this.overlay.addEventListener('radius-changed', () => {\n this.$emit('update:radius', this.emittedRadius = this.overlay.getRadius())\n })\n }\n },\n onDestroy() {\n this.$map.removeOverlay(this.overlay)\n },\n})\n</script>\n","<template>\n <div :class=\"$options.name\" v-bind=\"$attrs\">\n <slot />\n </div>\n</template>\n<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { ElementOverlay, LatLng, MapPane, unwrapStringEnumValue, type BaseMap, type ElementOverlayOptions, type OverlayProjection, type WrapStringEnumValue } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { requiredProp, stringEnumProp, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\n\n/** ElementOverlay的简单实现 */\nclass SimpleElementOverlay extends ElementOverlay {\n constructor(\n map: BaseMap,\n options: ElementOverlayOptions,\n public content: HTMLElement,\n private position: LatLng,\n ) {\n super(map, options)\n }\n protected onCreate(): HTMLElement {\n return this.content\n }\n protected onDraw(projection: OverlayProjection): void {\n const point = projection.fromLatLngToOverlayPoint(this.position)\n this.content.style.left = point.x + 'px'\n this.content.style.top = point.y + 'px'\n }\n setPosition(position: LatLng) {\n this.position = position\n this.draw()\n }\n}\n\nconst TgElementOverlay = defineComponent({\n name: 'tg-element-overlay',\n mixins: [MapMixin],\n props: {\n mapPane: stringEnumProp(MapPane, MapPane.overlayMouseTarget),\n position: requiredProp(LatLng),\n } satisfies Props<WrapStringEnumValue<ElementOverlayOptions, {\n mapPane: typeof MapPane,\n }> & { position: LatLng }>,\n setup() {\n return {\n overlay: lateinit<SimpleElementOverlay>(),\n }\n },\n watch: {\n position(value) {\n this.overlay.setPosition(value)\n },\n mapPane() {\n this.recreate()\n },\n },\n methods: {\n content(): HTMLElement {\n return this.$el as HTMLElement\n },\n },\n onCreate() {\n this.overlay = new SimpleElementOverlay(this.$map, unwrapStringEnumValue(this), this.content(), this.position)\n this.$map.addElementOverlay(this.overlay)\n },\n onDestroy() {\n this.$map.removeElementOverlay(this.overlay)\n },\n})\ntype TgElementOverlay = InstanceType<typeof TgElementOverlay>\nexport default TgElementOverlay\n</script>\n<style lang=\"scss\">\n// 只有移到.tg-map__map里面时才显示\n.tg-map .tg-element-overlay {\n display: none;\n}\n.tg-map__map .tg-element-overlay {\n display: block;\n}\n</style>\n","<template>\n <slot></slot>\n</template>\n<script lang=\"ts\">\nimport { deepEqual, lateinit, typed } from 'tg-commons'\nimport { BaiduMarker, bindEvents, LatLng, type MarkerEventMap, type MarkerLabel, type MarkerOptions, type MarkerOverlay, type UnionIcon } from 'tg-map-core'\nimport { defineComponent, toRaw, type PropType } from 'vue'\nimport { eventProp, optionalProp, requiredProp, safeAsComponent, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport TgMarkerClusterer from '../extra/TgMarkerClusterer.vue'\nimport MapMixin from '../map-mixin'\nimport type TgInfoBox from './TgInfoBox.vue'\nimport type TgInfoWindow from './TgInfoWindow.vue'\nimport type TgLabel from './TgLabel.vue'\n\ntype TgMarkerEmits = {\n 'update:position': LatLng,\n}\n\nexport type TgMarkerEventEmits = EventEmits<MarkerEventMap & TgMarkerEmits>\n\nexport const tgMarkerProps = {\n position: requiredProp(LatLng),\n title: optionalProp(String),\n label: optionalProp(Object as PropType<MarkerLabel>),\n icon: optionalProp(Object as PropType<UnionIcon>),\n clickable: optionalProp(Boolean),\n draggable: optionalProp(Boolean),\n crossOnDrag: optionalProp(Boolean),\n cursor: optionalProp(String),\n zIndex: optionalProp(Number),\n visible: optionalProp(Boolean),\n normalizePositionForBaidu: optionalProp(Boolean),\n /**\n * 是否自动添加到TgMarkerClusterer中去\n * @default true\n */\n autoAddToClusterer: optionalProp(Boolean, true),\n 'onUpdate:position': eventProp(),\n} satisfies Props<MarkerOptions & {\n autoAddToClusterer?: boolean\n}> & EventProps<TgMarkerEmits>\n\nconst TgMarker = defineComponent({\n name: 'tg-marker',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: tgMarkerProps,\n emits: undefined as any as TgMarkerEventEmits,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n marker: lateinit<MarkerOverlay>(),\n labelOverlay: typed<TgLabel>(),\n info: typed<TgInfo>(),\n emittedPosition: undefined as LatLng | undefined,\n autoAddToClustererWhenCreate: props.autoAddToClusterer,\n }\n },\n watch: {\n position(value: LatLng) {\n if (this.emittedPosition != null) {\n const position = this.emittedPosition\n this.emittedPosition = undefined\n if (position === toRaw(value)) {\n // 防止emit出的值被设置回来\n return\n }\n }\n this.marker.setPosition(value)\n },\n title(value: string) {\n this.marker.setTitle(value)\n },\n label(value?: MarkerLabel, oldValue?: MarkerLabel) {\n if (deepEqual(value, oldValue)) {\n // MarkerLabel是对象, 并且大部分时候都是直接在模板里面创建的, 很多时候创建的是内容相同的对象, 此时不需要更新\n return\n }\n if (value) {\n this.marker.setLabel(value)\n } else {\n this.recreate()\n }\n },\n icon(value?: UnionIcon) {\n if (value) {\n this.marker.setIcon(value)\n } else {\n this.recreate()\n }\n },\n clickable(value: boolean) {\n if (this.marker instanceof BaiduMarker) {\n this.recreate() // baidu不支持setClickable(), 故只能recreate()\n } else {\n this.marker.setClickable(value)\n }\n },\n draggable(value: boolean) {\n this.marker.setDraggable(value)\n },\n crossOnDrag() {\n this.recreate()\n },\n cursor() {\n this.recreate()\n },\n zIndex(value?: number) {\n if (this.marker instanceof BaiduMarker) {\n this.recreate() // 当前版本, baidu调用setZIndex()无效\n } else {\n this.marker.setZIndex(value)\n }\n },\n visible(value: boolean) {\n this.marker.setVisible(value)\n },\n normalizePositionForBaidu() {\n this.recreate()\n },\n autoAddToClusterer() {\n this.recreate()\n },\n },\n onCreate() {\n // 结构化类型, this包含MarkerOptions的所有属性, 故可以直接传进去\n this.marker = this.$map.createMarker(this)\n if (this.labelOverlay) {\n this.marker.attachLabelOverlay(this.labelOverlay.overlay)\n }\n\n if (this.$clusterer() && this.autoAddToClusterer) {\n this.$clusterer()!.onAddMarker(this.marker)\n } else {\n this.$map.addOverlay(this.marker)\n }\n // 保存创建时autoAddToClusterer的值, 销毁时需要使用它\n this.autoAddToClustererWhenCreate = this.autoAddToClusterer\n\n // baidu, 只有marker被添加到地图之后, 才能在它上面打开infoWindow\n // infoBox似乎没有这个限制, 但目前不区分infoWindow和infoBox, 故统一放在这里处理\n if (this.info) {\n this.info.show && this.info.overlay.open(this.marker)\n }\n\n bindEvents(this.attrs.listeners, this.marker)\n\n if (this.attrs.listenerProps['update:position']) {\n this.marker.addEventListener('dragend', (event) => {\n this.$emit('update:position', this.emittedPosition = event.position)\n })\n }\n },\n onDestroy() {\n if (this.$clusterer() && this.autoAddToClustererWhenCreate) {\n this.$clusterer()!.onRemoveMarker(this.marker)\n } else {\n this.$map.removeOverlay(this.marker)\n }\n },\n methods: {\n $clusterer(): TgMarkerClusterer | undefined {\n return safeAsComponent(this.$parent, TgMarkerClusterer)\n },\n onAddLabel(label: TgLabel) {\n this.labelOverlay = label\n // onAdd方法可能在创建this.marker前调用, 需要判断下\n if (this.marker) {\n this.marker.attachLabelOverlay(label.overlay)\n }\n },\n onRemoveLabel(_label: TgLabel) {\n this.marker.attachLabelOverlay(undefined)\n this.labelOverlay = undefined\n },\n onAddInfo(info: TgInfo) {\n this.info = info\n // @see {@link onAddLabel}\n if (this.marker) {\n info.show && info.overlay.open(this.marker)\n }\n },\n onRemoveInfo(info: TgInfo) {\n info.overlay.close()\n this.info = undefined\n },\n onInfoShowChanged(info: TgInfo, isShow: boolean) {\n isShow ? info.overlay.open(this.marker) : info.overlay.close()\n },\n },\n})\ntype TgMarker = InstanceType<typeof TgMarker>\nexport default TgMarker\n\nexport type TgInfo = TgInfoWindow | TgInfoBox\n\nexport type TgMarkerPublicInstance = {\n marker: MarkerOverlay\n\n onAddInfo(info: TgInfo): void\n onRemoveInfo(info: TgInfo): void\n onInfoShowChanged(info: TgInfo, isShow: boolean): void\n\n onAddLabel(label: TgLabel): void\n onRemoveLabel(label: TgLabel): void\n}\n</script>\n","<template>\n <div :class=\"$options.name\" v-bind=\"attrs.binds\">\n <slot />\n </div>\n</template>\n<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, LatLng, type InfoBoxOptions, type InfoBoxOverlay, type MarkerOverlay } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { TgMap } from '..'\nimport { eventProp, findAncestorComponentByType, optionalProp, requiredProp, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\nimport TgMarker, { type TgMarkerPublicInstance } from './TgMarker.vue'\ntype TgInfoBoxEmits = {\n 'update:show': boolean\n}\nconst TgInfoBox = defineComponent({\n name: 'tg-info-box',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: {\n show: requiredProp(Boolean),\n position: optionalProp(LatLng),\n offset: optionalProp(Object),\n maxWidth: optionalProp(Number),\n borderClass: optionalProp(String),\n zIndex: optionalProp(Number),\n disableAutoPan: optionalProp(Boolean),\n 'onUpdate:show': eventProp(),\n } satisfies Props<Omit<InfoBoxOptions, 'content'> & {\n show: boolean\n }> & EventProps<TgInfoBoxEmits>,\n emits: undefined as any as EventEmits<TgInfoBoxEmits>,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n overlay: lateinit<InfoBoxOverlay>(),\n }\n },\n watch: {\n show(isShow: boolean) {\n if (this.$marker()) {\n this.$marker()!.onInfoShowChanged(this, isShow)\n } else {\n isShow ? this.overlay.open() : this.overlay.close()\n }\n },\n position(value) {\n this.overlay.setPosition(value)\n },\n offset() {\n this.recreate()\n },\n maxWidth(value) {\n this.overlay.setMaxWidth(value)\n },\n borderClass() {\n this.recreate()\n },\n zIndex(value) {\n this.overlay.setZIndex(value)\n },\n disableAutoPan() {\n this.recreate()\n },\n },\n onCreate() {\n this.overlay = this.$map.createInfoBox(this.getOptions())\n if (this.$marker()) {\n this.$marker()!.onAddInfo(this)\n } else {\n this.show && this.overlay.open()\n }\n\n if (this.attrs.listenerProps['update:show']) {\n this.overlay.addEventListener('closeclick', () => {\n this.$emit('update:show', false)\n })\n }\n\n bindEvents(this.attrs.listeners, this.overlay)\n },\n onDestroy() {\n if (this.$marker()) {\n this.$marker()!.onRemoveInfo(this)\n } else {\n this.overlay.close()\n }\n },\n methods: {\n getOptions(): InfoBoxOptions {\n return {\n content: this.content(),\n position: this.position,\n offset: this.offset,\n zIndex: this.zIndex,\n maxWidth: this.maxWidth,\n borderClass: this.borderClass,\n disableAutoPan: this.disableAutoPan,\n }\n },\n content(): HTMLElement {\n return this.$el as HTMLElement\n },\n $marker(): TgMarkerPublicInstance | undefined {\n return findAncestorComponentByType(TgMarker, this.$parent, TgMap)\n },\n open(marker?: MarkerOverlay) {\n this.overlay.open(marker)\n },\n close() {\n this.overlay.close()\n },\n },\n})\ntype TgInfoBox = Omit<InstanceType<typeof TgInfoBox>, '$options'>\nexport default TgInfoBox\n</script>\n<style lang=\"scss\">\n// 只有移到.tg-map__map里面时才显示\n.tg-map .tg-info-box {\n display: none;\n}\n\n.tg-map__map .tg-info-box {\n display: block;\n}\n</style>\n","<template>\n <div v-show=\"show\" :class=\"$options.name\" v-bind=\"attrs.binds\">\n <slot />\n </div>\n</template>\n<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, LatLng, type InfoWindowEventMap, type InfoWindowOptions, type InfoWindowOverlay } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { TgMap } from '..'\nimport { eventProp, findAncestorComponentByType, optionalProp, requiredProp, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\nimport TgMarker, { type TgMarkerPublicInstance } from './TgMarker.vue'\n\ntype TgInfoWindowEmits = {\n 'update:show': boolean\n}\nconst TgInfoWindow = defineComponent({\n name: 'tg-info-window',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: {\n show: requiredProp(Boolean),\n position: optionalProp(LatLng),\n maxWidth: optionalProp(Number),\n offset: optionalProp(Object),\n disableAutoPan: optionalProp(Boolean),\n 'onUpdate:show': eventProp(),\n } satisfies Props<Omit<InfoWindowOptions, 'content'> & { show: boolean }> & EventProps<TgInfoWindowEmits>,\n emits: undefined as any as EventEmits<InfoWindowEventMap & TgInfoWindowEmits>,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n overlay: lateinit<InfoWindowOverlay>(),\n }\n },\n watch: {\n show(isShow: boolean) {\n if (this.$marker()) {\n this.$marker()!.onInfoShowChanged(this, isShow)\n } else {\n isShow ? this.overlay.open() : this.overlay.close()\n }\n },\n position(value) {\n this.overlay.setPosition(value)\n },\n maxWidth() {\n this.recreate()\n },\n offset() {\n this.recreate()\n },\n disableAutoPan() {\n this.recreate()\n },\n },\n methods: {\n content(): HTMLElement {\n return this.$el as HTMLElement\n },\n $marker(): TgMarkerPublicInstance | undefined {\n return findAncestorComponentByType(TgMarker, this.$parent, TgMap)\n },\n getOptions(): InfoWindowOptions {\n return {\n content: this.content(),\n position: this.position,\n maxWidth: this.maxWidth,\n offset: this.offset,\n disableAutoPan: this.disableAutoPan,\n }\n },\n },\n onCreate() {\n this.overlay = this.$map.createInfoWindow(this.getOptions())\n if (this.$marker()) {\n this.$marker()!.onAddInfo(this)\n } else {\n this.show && this.overlay.open()\n }\n\n // 监听open/close\n this.overlay.addEventListener('open', () => {\n this.$emit('update:show', true)\n })\n this.overlay.addEventListener('close', () => {\n this.$emit('update:show', false)\n })\n\n bindEvents(this.attrs.listeners, this.overlay)\n },\n onDestroy() {\n if (this.$marker()) {\n this.$marker()!.onRemoveInfo(this)\n } else {\n this.overlay.close()\n }\n },\n})\ntype TgInfoWindow = Omit<InstanceType<typeof TgInfoWindow>, '$options'>\nexport default TgInfoWindow\n</script>\n","<template>\n <div :class=\"$options.name\" v-bind=\"attrs.binds\">\n <slot />\n </div>\n</template>\n<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, LatLng, MapPane, unwrapStringEnumValue, type LabelEventMap, type LabelOptions, type LabelOverlay, type Marker, type WrapStringEnumValue } from 'tg-map-core'\nimport { defineComponent } from 'vue'\nimport { findAncestorComponentByType, optionalProp, stringEnumProp, useSplittedAttrs, type EventEmits, type Props } from '../../utils/vue-utils'\nimport TgMap from '../TgMap.vue'\nimport MapMixin from '../map-mixin'\nimport TgMarker, { type TgMarkerPublicInstance } from './TgMarker.vue'\n\nconst TgLabel = defineComponent({\n name: 'tg-label',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: {\n position: optionalProp(LatLng),\n offset: optionalProp(Object),\n zIndex: optionalProp(Number),\n mapPane: stringEnumProp(MapPane),\n } satisfies Props<WrapStringEnumValue<\n Omit<LabelOptions, 'content'>,\n { mapPane: typeof MapPane }\n >>,\n emits: undefined as any as EventEmits<LabelEventMap>,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs),\n overlay: lateinit<LabelOverlay>(),\n }\n },\n watch: {\n position(value) {\n this.overlay.setPosition(value)\n },\n offset(value) {\n this.overlay.setOffset(value)\n },\n zIndex(value) {\n this.overlay.setZIndex(value)\n },\n visible(value) {\n this.overlay.setVisible(value)\n },\n mapPane() {\n this.recreate()\n },\n },\n methods: {\n content(): HTMLElement {\n return this.$el as HTMLElement\n },\n marker(): Marker | undefined {\n return this.$marker()?.marker\n },\n $marker(): TgMarkerPublicInstance | undefined {\n return findAncestorComponentByType(TgMarker, this.$parent, TgMap)\n },\n getOptions(): LabelOptions {\n return {\n content: this.content(),\n position: this.position,\n offset: this.offset,\n zIndex: this.zIndex,\n mapPane: unwrapStringEnumValue(this.mapPane, MapPane),\n }\n },\n },\n onCreate() {\n this.overlay = this.$map.createLabel(this.getOptions())\n // 若父节点为marker, 则交由marker管理\n if (this.$marker()) {\n this.$marker()!.onAddLabel(this)\n } else {\n this.$map.addOverlay(this.overlay)\n }\n bindEvents(this.attrs.listeners, this.overlay)\n },\n onDestroy() {\n if (this.$marker()) {\n this.$marker()!.onRemoveLabel(this)\n } else {\n this.$map.removeOverlay(this.overlay)\n }\n },\n})\ntype TgLabel = Omit<InstanceType<typeof TgLabel>, '$options'>\nexport default TgLabel\n</script>\n<style lang=\"scss\">\n// 只有移到.tg-map__map里面时才显示\n.tg-map .tg-label {\n display: none;\n}\n.tg-map__map .tg-label {\n display: block;\n}\n</style>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, type LatLng, type PolygonEventMap, type PolygonOptions, type PolygonOverlay } from 'tg-map-core'\nimport { defineComponent, toRaw, type PropType } from 'vue'\nimport { eventProp, optionalProp, requiredProp, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\n\ntype TgPolygonEmits = {\n 'update:paths': LatLng[][],\n}\n\nexport const tgPolygonProps = {\n paths: requiredProp(Array as PropType<LatLng[][]>),\n clickable: optionalProp(Boolean),\n editable: optionalProp(Boolean),\n strokeColor: optionalProp(String),\n strokeOpacity: optionalProp(Number),\n strokeWeight: optionalProp(Number),\n visible: optionalProp(Boolean),\n zIndex: optionalProp(Number),\n fillColor: optionalProp(String),\n fillOpacity: optionalProp(Number),\n 'onUpdate:paths': eventProp(),\n} satisfies Props<PolygonOptions> & EventProps<TgPolygonEmits>\n\nexport type TgPolygonEventEmits = EventEmits<PolygonEventMap & TgPolygonEmits>\n\nexport default defineComponent({\n name: 'tg-polygon',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: tgPolygonProps,\n emits: undefined as any as TgPolygonEventEmits,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n overlay: lateinit<PolygonOverlay>(),\n emittedPaths: undefined as LatLng[][] | undefined,\n }\n },\n watch: {\n paths: {\n handler(value: LatLng[][]) {\n if (this.emittedPaths != null) {\n const paths = this.emittedPaths\n this.emittedPaths = undefined\n // 由于paths数组绝大多数时候长度都是1, 故这里可以浅层比较它\n if (paths.length === value.length && paths.every((v, i) => v === toRaw(value[i]))) {\n // 防止emit出的paths被设置回来\n return\n }\n }\n this.overlay.setPaths(value)\n },\n deep: true,\n },\n clickable() {\n this.recreate()\n },\n editable(value) {\n this.overlay.setEditable(value)\n },\n strokeColor(value) {\n this.overlay.setStrokeColor(value)\n },\n strokeOpacity(value) {\n this.overlay.setStrokeOpacity(value)\n },\n strokeWeight(value) {\n this.overlay.setStrokeWeight(value)\n },\n fillColor(value) {\n this.overlay.setFillColor(value)\n },\n fillOpacity(value) {\n this.overlay.setFillOpacity(value)\n },\n visible(value) {\n this.overlay.setVisible(value)\n },\n zIndex(value) {\n this.overlay.setZIndex(value)\n },\n },\n onCreate() {\n this.overlay = this.$map.createPolygon(this)\n this.$map.addOverlay(this.overlay)\n bindEvents(this.attrs.listeners, this.overlay)\n if (this.attrs.listenerProps['update:paths']) {\n this.overlay.addEventListener('paths-edited', () => {\n this.$emit('update:paths', this.emittedPaths = this.overlay.getPaths())\n })\n }\n },\n onDestroy() {\n this.$map.removeOverlay(this.overlay)\n },\n\n})\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, LatLng, type IconSequence, type PolylineEventMap, type PolylineOptions, type PolylineOverlay } from 'tg-map-core'\nimport { defineComponent, toRaw, type PropType } from 'vue'\nimport { eventProp, optionalProp, requiredProp, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\n\ntype TgPolylineEmits = {\n 'update:path': LatLng[],\n}\nexport default defineComponent({\n name: 'tg-polyline',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: {\n path: requiredProp(Array as PropType<LatLng[]>),\n icons: optionalProp(Array as PropType<IconSequence[]>),\n clickable: optionalProp(Boolean),\n editable: optionalProp(Boolean),\n strokeColor: optionalProp(String),\n strokeOpacity: optionalProp(Number),\n strokeWeight: optionalProp(Number),\n visible: optionalProp(Boolean),\n zIndex: optionalProp(Number),\n 'onUpdate:path': eventProp(),\n } satisfies Props<PolylineOptions> & EventProps<TgPolylineEmits>,\n emits: undefined as any as EventEmits<PolylineEventMap & TgPolylineEmits>,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n overlay: lateinit<PolylineOverlay>(),\n emittedPath: undefined as LatLng[] | undefined,\n }\n },\n watch: {\n path: {\n handler(value) {\n if (this.emittedPath != null) {\n const path = this.emittedPath\n this.emittedPath = undefined\n if (path === toRaw(value)) {\n // 防止emit出的path又被设置回去, 导致Google地图移动点后的撤销功能无效\n return\n }\n }\n this.overlay.setPath(value)\n },\n deep: true,\n },\n icons: {\n handler() {\n this.recreate()\n },\n deep: true,\n },\n clickable() {\n this.recreate()\n },\n editable(value) {\n this.overlay.setEditable(value)\n },\n strokeColor(value) {\n this.overlay.setStrokeColor(value)\n },\n strokeOpacity(value) {\n this.overlay.setStrokeOpacity(value)\n },\n strokeWeight(value) {\n this.overlay.setStrokeWeight(value)\n },\n visible(value) {\n this.overlay.setVisible(value)\n },\n zIndex(value) {\n this.overlay.setZIndex(value)\n },\n },\n onCreate() {\n this.overlay = this.$map.createPolyline(this)\n this.$map.addOverlay(this.overlay)\n bindEvents(this.attrs.listeners, this.overlay)\n\n if (this.attrs.listenerProps['update:path']) {\n this.overlay.addEventListener('path-edited', () => {\n this.$emit('update:path', this.emittedPath = this.overlay.getPath())\n })\n }\n },\n onDestroy() {\n this.overlay.remove()\n },\n})\n</script>\n","<script lang=\"ts\">\nimport { lateinit } from 'tg-commons'\nimport { bindEvents, type LatLngBounds, type RectangleEventMap, type RectangleOptions, type RectangleOverlay } from 'tg-map-core'\nimport { defineComponent, type PropType } from 'vue'\nimport { eventProp, optionalProp, requiredProp, useSplittedAttrs, type EventEmits, type EventProps, type Props } from '../../utils/vue-utils'\nimport MapMixin from '../map-mixin'\ntype TgRectangleEmits = {\n 'update:bounds': LatLngBounds,\n}\nexport default defineComponent({\n name: 'tg-rectangle',\n mixins: [MapMixin],\n inheritAttrs: false,\n props: {\n bounds: requiredProp(Object as PropType<LatLngBounds>),\n clickable: optionalProp(Boolean),\n editable: optionalProp(Boolean),\n strokeColor: optionalProp(String),\n strokeOpacity: optionalProp(Number),\n strokeWeight: optionalProp(Number),\n visible: optionalProp(Boolean),\n zIndex: optionalProp(Number),\n fillColor: optionalProp(String),\n fillOpacity: optionalProp(Number),\n 'onUpdate:bounds': eventProp(),\n } satisfies Props<RectangleOptions> & EventProps<TgRectangleEmits>,\n emits: undefined as any as EventEmits<RectangleEventMap & TgRectangleEmits>,\n setup(props, { attrs }) {\n return {\n attrs: useSplittedAttrs(attrs, props),\n overlay: lateinit<RectangleOverlay>(),\n emittedBounds: undefined as LatLngBounds | undefined,\n }\n },\n watch: {\n bounds(value: LatLngBounds) {\n if (this.emittedBounds != null) {\n const bounds = this.emittedBounds\n this.emittedBounds = undefined\n // bounds很大可能会被重新创建, 故需要严格比较相等\n if (bounds.equals(value)) {\n // 防止emit出的值又被设置回来\n return\n }\n }\n this.overlay.setBounds(value)\n },\n clickable() {\n this.recreate()\n },\n editable(value) {\n this.overlay.setEditable(value)\n },\n strokeColor(value) {\n this.overlay.setStrokeColor(value)\n },\n strokeOpacity(value) {\n this.overlay.setStrokeOpacity(value)\n },\n strokeWeight(value) {\n this.overlay.setStrokeWeight(value)\n },\n fillColor(value) {\n this.overlay.setFillColor(value)\n },\n fillOpacity(value) {\n this.overlay.setFillOpacity(value)\n },\n visible(value) {\n this.overlay.setVisible(value)\n },\n zIndex(value) {\n this.overlay.setZIndex(value)\n },\n },\n onCreate() {\n this.overlay = this.$map.createRectangle(this)\n this.$map.addOverlay(this.overlay)\n bindEvents(this.attrs.listeners, this.overlay)\n if (this.attrs.listenerProps['update:bounds']) {\n this.overlay.addEventListener('bounds-changed', () => {\n this.$emit('update:bounds', this.emittedBounds = this.overlay.getBounds())\n })\n }\n },\n onDestroy() {\n this.$map.removeOverlay(this.overlay)\n },\n\n})\n</script>\n","import { noop } from 'tg-commons'\nimport { defineComponent, type App } from 'vue'\nimport { useComponentName } from './hooks'\nimport type { VueHookName } from './vue-utils'\n\nconst DEFAULT_EXCLUDE_HOOK_NAMES: VueHookName[] = ['beforeUpdate', 'updated']\n\nexport interface LifecycleLogOptions {\n /** @default /^[A-Z]/ 匹配大写字母开头的组件名 */\n nameRegex?: RegExp\n /** @default true 开启log */\n enable?: boolean,\n /** @default 除 updated, beforeUpdate 外的所有hook */\n hookNames?: VueHookName[]\n}\n\nconst LifecycleLogPlugin = {\n install(app: App, options: LifecycleLogOptions = {}) {\n if (options.enable !== false) {\n const lifecycleLogMixin = defineComponent({\n beforeCreate() {\n const componentName = useComponentName() ?? ''\n const matched = (options.nameRegex || /^[A-Z]/).test(componentName)\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const __life = matched\n ? (hookName: VueHookName) => {\n if (options.hookNames) {\n if (options.hookNames.includes(hookName)) {\n console.debug('[lifecycle]', componentName, hookName)\n }\n } else if (!DEFAULT_EXCLUDE_HOOK_NAMES.includes(hookName)) {\n console.debug('[lifecycle]', componentName, hookName)\n }\n }\n : noop\n // `beforeCreate`触发在data/props/methods等组件状态初始化之前, 所以若`__life`方法直接在methods中实现, 在这里是调用不到的(\n __life('beforeCreate')\n ; (this as any).__life_impl = __life\n },\n created() {\n this.__life('created')\n },\n beforeMount() {\n this.__life('beforeMount')\n },\n mounted() {\n this.__life('mounted')\n },\n beforeUpdate() {\n this.__life('beforeUpdate')\n },\n updated() {\n this.__life('updated')\n },\n beforeUnmount() {\n this.__life('beforeUnmount')\n },\n unmounted() {\n this.__life('unmounted')\n },\n methods: {\n __life(hookName: VueHookName) {\n (this as any).__life_impl(hookName)\n },\n },\n onCreate() {\n this.__life('onCreate')\n },\n onDestroy() {\n this.__life('onDestroy')\n },\n })\n app.mixin(lifecycleLogMixin as any)\n }\n },\n}\nexport default LifecycleLogPlugin\n","import { throwError } from 'tg-commons'\nimport { type PartialTgMapConfig, setTgMapConfig } from 'tg-map-core'\nimport 'tg-map-core/dist/tg-map-core.css'\nimport type { App, Component } from 'vue'\n\nimport MapMixin, { MIXIN_HOOK_CREATE, MIXIN_HOOK_DESTROY, MIXIN_MAP_NAME } from './map-mixin'\n\nconst TgMapPlugin = {\n install(app: App, config?: PartialTgMapConfig) {\n setTgMapConfig(config)\n // Vue3中提倡在需要用的地方导入组件, 对tree-shrink更友好\n if (import.meta.env.VITE_FALSE) {\n // 注册所有Tg开头的Vue\n // ## webpack:\n // const views = require.context('./', true, /Tg.*\\.vue$/)\n // ## vite:\n const views = import.meta.glob('./**/Tg*.vue', { eager: true, import: 'default' })\n Object.keys(views).forEach(key => {\n const TgVue = views[key] as Component\n app.component(TgVue.name ?? throwError(`Tg开头的组件必须设置name: ${key}`), TgVue)\n })\n }\n\n const strategies = app.config.optionMergeStrategies\n // Vue3中必须自己写合并策略: https://github.com/vuejs/core/issues/861\n strategies[MIXIN_HOOK_CREATE] = strategies[MIXIN_HOOK_DESTROY] = (to, from) => {\n // 依照Vue2的风格, 将方法合并成数组\n // 参考:\n // - Vue3兼容模式: https://github.com/vuejs/core/blob/650f5c26f464505d9e865bdb0eafb24350859528/packages/runtime-core/src/componentOptions.ts#L1065\n // - Vue2: https://github.com/vuejs/vue/blob/a9ca2d85193e435e668ba25ace481bfb176b0c6e/src/core/util/options.ts#L154\n return to\n ? [...new Set([].concat(to as any, from as any))]\n : Array.isArray(from)\n ? from\n : [from]\n }\n },\n}\n\n/* 导出变量, 外部应该只使用从这里导出的变量 */\nexport default TgMapPlugin\n// 导出map和utils目录\nexport * from 'tg-map-core'\nexport { default as LifecycleLogPlugin, type LifecycleLogOptions } from '../utils/lifecycle-log'\nexport * from '../utils/vue-utils'\n// 导出vue文件\nexport { default as TgCustomControl } from './controls/TgCustomControl.vue'\nexport { default as TgMapTypeControl } from './controls/TgMapTypeControl.vue'\nexport { default as TgScaleControl } from './controls/TgScaleControl.vue'\nexport { default as TgStreetViewControl } from './controls/TgStreetViewControl.vue'\nexport { default as TgZoomControl } from './controls/TgZoomControl.vue'\nexport { default as TgHeatmap } from './extra/TgHeatmap.vue'\nexport { default as TgMarkerClusterer } from './extra/TgMarkerClusterer.vue'\nexport { default as TgTrafficLayer } from './layers/TgTrafficLayer.vue'\nexport * from './map-hooks'\nexport { default as TgCircle } from './overlays/TgCircle.vue'\nexport { default as TgElementOverlay } from './overlays/TgElementOverlay.vue'\nexport { default as TgInfoBox } from './overlays/TgInfoBox.vue'\nexport { default as TgInfoWindow } from './overlays/TgInfoWindow.vue'\nexport { default as TgLabel } from './overlays/TgLabel.vue'\nexport { default as TgMarker } from './overlays/TgMarker.vue'\nexport { default as TgPolygon } from './overlays/TgPolygon.vue'\nexport { default as TgPolyline } from './overlays/TgPolyline.vue'\nexport { default as TgRectangle } from './overlays/TgRectangle.vue'\nexport { default as TgMap } from './TgMap.vue'\nexport { default as TgMapWidget } from './TgMapWidget.vue'\nexport {\n MapMixin, MIXIN_HOOK_CREATE,\n MIXIN_HOOK_DESTROY,\n MIXIN_MAP_NAME,\n}\n// END\n"],"names":["stringEnumProp","enumObject","defaultValue","value","stringUnionPropFromValues","values","requiredProp","type","optionalProp","computedSaveOnThis","defaultValues","accessors","key","name","sharedPropertyDefinition","noop","createPropertyObject","obj","redefined","createPropertyObjectTyped","createEmptyVNode","createCommentVNode","callHook","vm","hookName","hooks","hook","findByComponentType","arr","component","item","extractVNodeFromSlotsByComponent","slots","nodeList","node","splitAttrs","attrs","props","listeners","binds","listenerProps","Strings","useSplittedAttrs","computed","eventProp","useEventLogMethods","prevType","prevTime","eventLog","event","eventLogLess","isComponentByType","instance","safeAsComponent","findAncestorComponentByType","startInstance","endComponent","MIXIN_MAP_NAME","MIXIN_HOOK_CREATE","MIXIN_HOOK_DESTROY","MapMixin","defineComponent","tgMapProps","TgMapType","LatLng","InfoWindowModeValues","GestureHandlingOptions","BuildInMapTypeId","_sfc_main$c","typed","Objects","_a","unwrapStringEnumValue","MapType","loadCachedMap","e","map","TgMapFactory","markRaw","bindEvents","watch","zoom","center","oldZoom","oldCenter","updateCenter","isUpdateMapType","isUpdateMapTypeId","mapType","_openBlock","_createElementBlock","_mergeProps","_ctx","_createElementVNode","_normalizeClass","_createCommentVNode","_renderSlot","_sfc_main$b","dimen","_normalizeStyle","_sfc_main$a","ControlPosition","lateinit","TgMap","$el","C","CustomControl","_sfc_main$9","MapTypeControlType","_sfc_main$8","useComponentName","getCurrentInstance","file","path","useTgMapInner","mapRef","inject","onCreate","onDestroy","throwError","onMounted","onBeforeUnmount","_sfc_main$7","control","_sfc_main$6","_sfc_main$5","heatmap","v","TgMarkerClusterer","marker","Arrays","_sfc_main$4","TrafficLayer","_sfc_main$3","toRaw","radius","SimpleElementOverlay","ElementOverlay","options","content","position","projection","point","TgElementOverlay","MapPane","tgMarkerProps","TgMarker","oldValue","deepEqual","BaiduMarker","label","_label","info","isShow","TgInfoBox","TgInfoWindow","_withDirectives","TgLabel","tgPolygonProps","_sfc_main$2","paths","i","_sfc_main$1","_sfc_main","bounds","DEFAULT_EXCLUDE_HOOK_NAMES","LifecycleLogPlugin","app","lifecycleLogMixin","componentName","__life","TgMapPlugin","config","setTgMapConfig","strategies","to","from"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tg-map-vue3",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.7",
|
|
4
4
|
"author": "ipcjs",
|
|
5
5
|
"description": "封装 百度地图, Google地图, Here地图(未完成) 的Vue3组件库",
|
|
6
6
|
"keywords": [
|
|
@@ -41,19 +41,19 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@types/baidumap-web-sdk": "0.0.11",
|
|
44
|
-
"@types/bmapgl-browser": "github:TranscodeGroup/DefinitelyTyped#path:/types/bmapgl-browser&9ed2593293c552e55d3defc8ca17d13d5f37cf5b",
|
|
45
44
|
"@types/google.maps": "3.51.1",
|
|
46
45
|
"@types/heremaps": "3.0.14",
|
|
47
46
|
"maptalks": "^1.7.1",
|
|
48
47
|
"maptalks.markercluster": "0.8.8",
|
|
49
|
-
"tg-commons": "^1.2.
|
|
50
|
-
"tg-map-core": "4.1.
|
|
48
|
+
"tg-commons": "^1.2.10",
|
|
49
|
+
"tg-map-core": "4.1.7"
|
|
51
50
|
},
|
|
52
51
|
"peerDependencies": {
|
|
53
52
|
"vue": "^3.5.16"
|
|
54
53
|
},
|
|
55
54
|
"devDependencies": {
|
|
56
55
|
"@tsconfig/node20": "^20.1.5",
|
|
56
|
+
"@types/bmapgl-browser": "github:TranscodeGroup/DefinitelyTyped#path:/types/bmapgl-browser&9ed2593293c552e55d3defc8ca17d13d5f37cf5b",
|
|
57
57
|
"@types/jsdom": "^21.1.7",
|
|
58
58
|
"@types/node": "^20.19.0",
|
|
59
59
|
"@vitejs/plugin-vue": "^5.2.4",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const b="data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXY+NDA0IDxwPiRyb3V0ZXI6IHt7ICRyb3V0ZXIgfX08L3A+PC9kaXY+CjwvdGVtcGxhdGU+CjxzY3JpcHQgbGFuZz0idHMiPgppbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tICd2dWUnCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7Cn0pCjwvc2NyaXB0Pgo=";export{b as default};
|
|
2
|
-
//# sourceMappingURL=404-D34FYbNB.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"404-D34FYbNB.js","sources":["../../src/views/404.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXY+NDA0IDxwPiRyb3V0ZXI6IHt7ICRyb3V0ZXIgfX08L3A+PC9kaXY+CjwvdGVtcGxhdGU+CjxzY3JpcHQgbGFuZz0idHMiPgppbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tICd2dWUnCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7Cn0pCjwvc2NyaXB0Pgo=\""],"names":["_404"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const g="data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXY+CiAgICA8dGctbWFwCiAgICAgIDprZXk9Im1hcFR5cGUiCiAgICAgIHYtbW9kZWw6em9vbT0iem9vbSIKICAgICAgdi1tb2RlbDpjdXJyZW50LWNlbnRlcj0iY3VycmVudENlbnRlciIKICAgICAgY2xhc3M9ImFicy1jb250YWluZXIiCiAgICAgIDpoaWRlLWxvZ289ImhpZGVMb2dvIgogICAgICA6dHlwZT0ibWFwVHlwZSIKICAgICAgOmNlbnRlcj0iY2VudGVyIgogICAgICBAbG9hZD0ib25NYXBMb2FkIgogICAgICBAZXJyb3I9ImV2ZW50TG9nIgogICAgICBAeF9tb3VzZW1vdmU9ImV2ZW50TG9nKCRldmVudC5wb3NpdGlvbikiCiAgICA+CiAgICAgIDx0Zy1tYXJrZXIKICAgICAgICB2LWZvcj0iKHBvaW50LCBpKSBpbiBwb2ludHMiCiAgICAgICAgOmtleT0icG9pbnQudG9TdHJpbmcoKSIKICAgICAgICA6cG9zaXRpb249InBvaW50IgogICAgICAgIDppY29uPSJpY29uc1tpICUgaWNvbnMubGVuZ3RoXSIKICAgICAgICA6dGl0bGU9InBvaW50LnRvU3RyaW5nKCkiCiAgICAgIC8+CiAgICAgIDx0Zy1tYXJrZXIgOnBvc2l0aW9uPSJjdXJyZW50Q2VudGVyIiAvPgogICAgICA8IS0tIOWQjOS4gOenjeexu+Wei+eahGNvbnRyb2wsIGJhaWR15Y+v5Lul5pi+56S65aSa5LiqLCBnb29nbGXlj6rog73mmL7npLrkuIDkuKogLS0+CiAgICAgIDx0Zy1tYXAtdHlwZS1jb250cm9sIHBvc2l0aW9uPSJyaWdodC10b3AiIC8+CiAgICAgIDx0Zy1tYXAtdHlwZS1jb250cm9sIC8+CiAgICAgIDx0Zy16b29tLWNvbnRyb2wgLz4KICAgICAgPHRnLXNjYWxlLWNvbnRyb2wgLz4KICAgICAgPHRnLXN0cmVldC12aWV3LWNvbnRyb2wgLz4KICAgICAgPCEtLSDoh6rlrprkuYlDb250cm9sLCDpg73lj6/ku6XmmL7npLrlpJrkuKosIOS9huebuOWQjOaWueS9jeeahCwgYmFpZHXkvJrph43lj6AsIGdvb2dsZeS4jeS8miAtLT4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJyaWdodC1ib3R0b20iPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5SVDE6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJyaWdodC1ib3R0b20iPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5SVDI6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJib3R0b20tcmlnaHQiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5CUjE6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJib3R0b20tcmlnaHQiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5CUjI6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRlbXBsYXRlICNvdmVybGF5PgogICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAxMDAlOyI+CiAgICAgICAgICA8TWFwVHlwZVNlbGVjdCAvPgogICAgICAgICAgPGJyPgogICAgICAgICAgPGxhYmVsPiA8aW5wdXQgdi1tb2RlbD0iaGlkZUxvZ28iIHR5cGU9ImNoZWNrYm94Ij4g6ZqQ6JePTG9nbyA8L2xhYmVsPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zy1tYXA+CiAgPC9kaXY+CjwvdGVtcGxhdGU+CjxzY3JpcHQgbGFuZz0idHMiPgppbXBvcnQgTWFwVHlwZVNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvb3RoZXIvTWFwVHlwZVNlbGVjdC52dWUnCmltcG9ydCB7IGxhdGVpbml0IH0gZnJvbSAndGctY29tbW9ucycKaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJwppbXBvcnQgeyBCYXNlTWFwLCBDb250cm9sUG9zaXRpb24sIENvb3JkVHlwZSwgQ3VzdG9tQ29udHJvbCwgTGF0TG5nLCBUZ0N1c3RvbUNvbnRyb2wsIFRnTWFwLCBUZ01hcFR5cGVDb250cm9sLCBUZ01hcmtlciwgVGdTY2FsZUNvbnRyb2wsIFRnU3RyZWV0Vmlld0NvbnRyb2wsIFRnWm9vbUNvbnRyb2wsIHR5cGUgQWJzdHJhY3RNYXAsIHR5cGUgTWFwVHlwZUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJwppbXBvcnQgeyBzdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlJwppbXBvcnQgeyB1c2VFdmVudExvZ01ldGhvZHMgfSBmcm9tICcuLi8uLi91dGlscy92dWUtdXRpbHMnCmltcG9ydCB7IGljb25zLCBsaW5lNSB9IGZyb20gJy4vZGF0YScKCi8vIFRPLURPOiAyMDIzLzAzLzMwIGlwY2pzIHhfbW91c2Vtb3Zl5LqL5Lu25Ly85LmO5rKh5pyJ6Kem5Y+RPwovLyAgICAgICAgICAgICAgICAgICAgICAtPiBgeF9g5byA5aS055qE5LqL5Lu25piv55So5p2l5Li05pe25YWz6Zet55uR5ZCs55qELi4u5bCx5piv5Li65LqG6K6p5a6D5LiN6Kem5Y+RCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7CiAgY29tcG9uZW50czogewogICAgTWFwVHlwZVNlbGVjdCwKICAgIFRnTWFya2VyLAogICAgVGdNYXBUeXBlQ29udHJvbCwKICAgIFRnWm9vbUNvbnRyb2wsCiAgICBUZ1NjYWxlQ29udHJvbCwKICAgIFRnU3RyZWV0Vmlld0NvbnRyb2wsCiAgICBUZ0N1c3RvbUNvbnRyb2wsCiAgICBUZ01hcCwKICB9LAogIHNldHVwKCkgewogICAgY29uc3QgJCA9IHVzZUV2ZW50TG9nTWV0aG9kcygpCiAgICByZXR1cm4gewogICAgICBtYXBUeXBlQ29udHJvbDogbGF0ZWluaXQ8TWFwVHlwZUNvbnRyb2w+KCksCiAgICAgIC4uLiQsCiAgICB9CiAgfSwKICBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgY2VudGVyOiBsaW5lNVswXSwKICAgICAgem9vbTogMTMsCiAgICAgIGNvdW50OiAwLAogICAgICBwb2ludHM6IFsKICAgICAgICBMYXRMbmcuWkVSTywKICAgICAgICBMYXRMbmcuY3JlYXRlKDAsIDE4MCksCiAgICAgICAgTGF0TG5nLmNyZWF0ZSgwLCAxODAsIENvb3JkVHlwZS5iZDA5KSwKICAgICAgXSwKICAgICAgaWNvbnM6IGljb25zLAogICAgICBjdXJyZW50Q2VudGVyOiBMYXRMbmcuWkVSTywKICAgICAgaGlkZUxvZ286IHRydWUsCiAgICB9CiAgfSwKICBjb21wdXRlZDogewogICAgbWFwVHlwZSgpIHsKICAgICAgcmV0dXJuIHN0b3JlLnN0YXRlLm1hcFR5cGUKICAgIH0sCiAgfSwKICBtZXRob2RzOiB7CiAgICBvbk1hcExvYWQobWFwOiBBYnN0cmFjdE1hcCkgewogICAgICBpZiAoIShtYXAgaW5zdGFuY2VvZiBCYXNlTWFwKSkgewogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGNvbnN0IEMgPSBjbGFzcyBleHRlbmRzIEN1c3RvbUNvbnRyb2wgewogICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgc3VwZXIoQ29udHJvbFBvc2l0aW9uLlRPUF9MRUZUKQogICAgICAgIH0KICAgICAgICBvbkNyZWF0ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgewogICAgICAgICAgY29uc3QgJGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpCiAgICAgICAgICAkZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdmdWNrJykpCiAgICAgICAgICAkZGl2LnN0eWxlLmJhY2tncm91bmQgPSAncmVkJwogICAgICAgICAgcmV0dXJuICRkaXYKICAgICAgICB9CiAgICAgIH0KICAgICAgbWFwLmFkZEN1c3RvbUNvbnRyb2wobmV3IEMoKSkKICAgIH0sCiAgfSwKfSkKPC9zY3JpcHQ+Cg==";export{g as default};
|
|
2
|
-
//# sourceMappingURL=ControlDemo-BvElkDpq.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ControlDemo-BvElkDpq.js","sources":["../../src/views/map/ControlDemo.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXY+CiAgICA8dGctbWFwCiAgICAgIDprZXk9Im1hcFR5cGUiCiAgICAgIHYtbW9kZWw6em9vbT0iem9vbSIKICAgICAgdi1tb2RlbDpjdXJyZW50LWNlbnRlcj0iY3VycmVudENlbnRlciIKICAgICAgY2xhc3M9ImFicy1jb250YWluZXIiCiAgICAgIDpoaWRlLWxvZ289ImhpZGVMb2dvIgogICAgICA6dHlwZT0ibWFwVHlwZSIKICAgICAgOmNlbnRlcj0iY2VudGVyIgogICAgICBAbG9hZD0ib25NYXBMb2FkIgogICAgICBAZXJyb3I9ImV2ZW50TG9nIgogICAgICBAeF9tb3VzZW1vdmU9ImV2ZW50TG9nKCRldmVudC5wb3NpdGlvbikiCiAgICA+CiAgICAgIDx0Zy1tYXJrZXIKICAgICAgICB2LWZvcj0iKHBvaW50LCBpKSBpbiBwb2ludHMiCiAgICAgICAgOmtleT0icG9pbnQudG9TdHJpbmcoKSIKICAgICAgICA6cG9zaXRpb249InBvaW50IgogICAgICAgIDppY29uPSJpY29uc1tpICUgaWNvbnMubGVuZ3RoXSIKICAgICAgICA6dGl0bGU9InBvaW50LnRvU3RyaW5nKCkiCiAgICAgIC8+CiAgICAgIDx0Zy1tYXJrZXIgOnBvc2l0aW9uPSJjdXJyZW50Q2VudGVyIiAvPgogICAgICA8IS0tIOWQjOS4gOenjeexu+Wei+eahGNvbnRyb2wsIGJhaWR15Y+v5Lul5pi+56S65aSa5LiqLCBnb29nbGXlj6rog73mmL7npLrkuIDkuKogLS0+CiAgICAgIDx0Zy1tYXAtdHlwZS1jb250cm9sIHBvc2l0aW9uPSJyaWdodC10b3AiIC8+CiAgICAgIDx0Zy1tYXAtdHlwZS1jb250cm9sIC8+CiAgICAgIDx0Zy16b29tLWNvbnRyb2wgLz4KICAgICAgPHRnLXNjYWxlLWNvbnRyb2wgLz4KICAgICAgPHRnLXN0cmVldC12aWV3LWNvbnRyb2wgLz4KICAgICAgPCEtLSDoh6rlrprkuYlDb250cm9sLCDpg73lj6/ku6XmmL7npLrlpJrkuKosIOS9huebuOWQjOaWueS9jeeahCwgYmFpZHXkvJrph43lj6AsIGdvb2dsZeS4jeS8miAtLT4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJyaWdodC1ib3R0b20iPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5SVDE6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJyaWdodC1ib3R0b20iPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5SVDI6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJib3R0b20tcmlnaHQiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5CUjE6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRnLWN1c3RvbS1jb250cm9sIHBvc2l0aW9uPSJib3R0b20tcmlnaHQiPgogICAgICAgIDxidXR0b24gQGNsaWNrPSJjb3VudCsrIj5CUjI6e3sgY291bnQgfX08L2J1dHRvbj4KICAgICAgPC90Zy1jdXN0b20tY29udHJvbD4KICAgICAgPHRlbXBsYXRlICNvdmVybGF5PgogICAgICAgIDxkaXYgc3R5bGU9IndpZHRoOiAxMDAlOyI+CiAgICAgICAgICA8TWFwVHlwZVNlbGVjdCAvPgogICAgICAgICAgPGJyPgogICAgICAgICAgPGxhYmVsPiA8aW5wdXQgdi1tb2RlbD0iaGlkZUxvZ28iIHR5cGU9ImNoZWNrYm94Ij4g6ZqQ6JePTG9nbyA8L2xhYmVsPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zy1tYXA+CiAgPC9kaXY+CjwvdGVtcGxhdGU+CjxzY3JpcHQgbGFuZz0idHMiPgppbXBvcnQgTWFwVHlwZVNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvb3RoZXIvTWFwVHlwZVNlbGVjdC52dWUnCmltcG9ydCB7IGxhdGVpbml0IH0gZnJvbSAndGctY29tbW9ucycKaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJwppbXBvcnQgeyBCYXNlTWFwLCBDb250cm9sUG9zaXRpb24sIENvb3JkVHlwZSwgQ3VzdG9tQ29udHJvbCwgTGF0TG5nLCBUZ0N1c3RvbUNvbnRyb2wsIFRnTWFwLCBUZ01hcFR5cGVDb250cm9sLCBUZ01hcmtlciwgVGdTY2FsZUNvbnRyb2wsIFRnU3RyZWV0Vmlld0NvbnRyb2wsIFRnWm9vbUNvbnRyb2wsIHR5cGUgQWJzdHJhY3RNYXAsIHR5cGUgTWFwVHlwZUNvbnRyb2wgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzJwppbXBvcnQgeyBzdG9yZSB9IGZyb20gJy4uLy4uL3N0b3JlJwppbXBvcnQgeyB1c2VFdmVudExvZ01ldGhvZHMgfSBmcm9tICcuLi8uLi91dGlscy92dWUtdXRpbHMnCmltcG9ydCB7IGljb25zLCBsaW5lNSB9IGZyb20gJy4vZGF0YScKCi8vIFRPLURPOiAyMDIzLzAzLzMwIGlwY2pzIHhfbW91c2Vtb3Zl5LqL5Lu25Ly85LmO5rKh5pyJ6Kem5Y+RPwovLyAgICAgICAgICAgICAgICAgICAgICAtPiBgeF9g5byA5aS055qE5LqL5Lu25piv55So5p2l5Li05pe25YWz6Zet55uR5ZCs55qELi4u5bCx5piv5Li65LqG6K6p5a6D5LiN6Kem5Y+RCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7CiAgY29tcG9uZW50czogewogICAgTWFwVHlwZVNlbGVjdCwKICAgIFRnTWFya2VyLAogICAgVGdNYXBUeXBlQ29udHJvbCwKICAgIFRnWm9vbUNvbnRyb2wsCiAgICBUZ1NjYWxlQ29udHJvbCwKICAgIFRnU3RyZWV0Vmlld0NvbnRyb2wsCiAgICBUZ0N1c3RvbUNvbnRyb2wsCiAgICBUZ01hcCwKICB9LAogIHNldHVwKCkgewogICAgY29uc3QgJCA9IHVzZUV2ZW50TG9nTWV0aG9kcygpCiAgICByZXR1cm4gewogICAgICBtYXBUeXBlQ29udHJvbDogbGF0ZWluaXQ8TWFwVHlwZUNvbnRyb2w+KCksCiAgICAgIC4uLiQsCiAgICB9CiAgfSwKICBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgY2VudGVyOiBsaW5lNVswXSwKICAgICAgem9vbTogMTMsCiAgICAgIGNvdW50OiAwLAogICAgICBwb2ludHM6IFsKICAgICAgICBMYXRMbmcuWkVSTywKICAgICAgICBMYXRMbmcuY3JlYXRlKDAsIDE4MCksCiAgICAgICAgTGF0TG5nLmNyZWF0ZSgwLCAxODAsIENvb3JkVHlwZS5iZDA5KSwKICAgICAgXSwKICAgICAgaWNvbnM6IGljb25zLAogICAgICBjdXJyZW50Q2VudGVyOiBMYXRMbmcuWkVSTywKICAgICAgaGlkZUxvZ286IHRydWUsCiAgICB9CiAgfSwKICBjb21wdXRlZDogewogICAgbWFwVHlwZSgpIHsKICAgICAgcmV0dXJuIHN0b3JlLnN0YXRlLm1hcFR5cGUKICAgIH0sCiAgfSwKICBtZXRob2RzOiB7CiAgICBvbk1hcExvYWQobWFwOiBBYnN0cmFjdE1hcCkgewogICAgICBpZiAoIShtYXAgaW5zdGFuY2VvZiBCYXNlTWFwKSkgewogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGNvbnN0IEMgPSBjbGFzcyBleHRlbmRzIEN1c3RvbUNvbnRyb2wgewogICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgc3VwZXIoQ29udHJvbFBvc2l0aW9uLlRPUF9MRUZUKQogICAgICAgIH0KICAgICAgICBvbkNyZWF0ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQgewogICAgICAgICAgY29uc3QgJGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpCiAgICAgICAgICAkZGl2LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdmdWNrJykpCiAgICAgICAgICAkZGl2LnN0eWxlLmJhY2tncm91bmQgPSAncmVkJwogICAgICAgICAgcmV0dXJuICRkaXYKICAgICAgICB9CiAgICAgIH0KICAgICAgbWFwLmFkZEN1c3RvbUNvbnRyb2wobmV3IEMoKSkKICAgIH0sCiAgfSwKfSkKPC9zY3JpcHQ+Cg==\""],"names":["ControlDemo"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const g="data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXYgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0OiAxMDB2aDsgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jazsiPgogICAgPGRpdiBjbGFzcz0icGFyZW50Ij4KICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGlsZDIiPjwvZGl2PgogICAgICBjaGlsZDMKICAgIDwvZGl2PgogICAgdGV4dAogIDwvZGl2Pgo8L3RlbXBsYXRlPgoKPHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+Cgo8L3NjcmlwdD4KCjxzdHlsZSBsYW5nPSJzY3NzIiBzY29wZWQ+Ci5wYXJlbnR7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjgsIDAsIDAuNSk7CiAgLy8gZGlzcGxheTogZmxleDsKICAvLyBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAvLyBkaXNwbGF5OiBpbmxpbmU7CiAgLy8gZGlzcGxheTogYmxvY2s7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC8vIHdpZHRoOiA1MHB4OwogIC8vIGhlaWdodDogNTBweDsKfQouY2hpbGQgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOwogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4Owp9Ci5jaGlsZDIgewogIC8vIGRpc3BsYXk6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMCwgMC41KTsKICB3aWR0aDogMjAwcHg7CiAgaGVpZ2h0OiAyMDBweDsKfQo8L3N0eWxlPgo=";export{g as default};
|
|
2
|
-
//# sourceMappingURL=CssPositionDemo-DbSCIYVw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CssPositionDemo-DbSCIYVw.js","sources":["../../src/views/others/CssPositionDemo.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXYgc3R5bGU9IndpZHRoOiAxMDB2dzsgaGVpZ2h0OiAxMDB2aDsgYmFja2dyb3VuZC1jb2xvcjogZ3JheTsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jazsiPgogICAgPGRpdiBjbGFzcz0icGFyZW50Ij4KICAgICAgPGRpdiBjbGFzcz0iY2hpbGQiPjwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjaGlsZDIiPjwvZGl2PgogICAgICBjaGlsZDMKICAgIDwvZGl2PgogICAgdGV4dAogIDwvZGl2Pgo8L3RlbXBsYXRlPgoKPHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+Cgo8L3NjcmlwdD4KCjxzdHlsZSBsYW5nPSJzY3NzIiBzY29wZWQ+Ci5wYXJlbnR7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxMjgsIDAsIDAuNSk7CiAgLy8gZGlzcGxheTogZmxleDsKICAvLyBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAvLyBkaXNwbGF5OiBpbmxpbmU7CiAgLy8gZGlzcGxheTogYmxvY2s7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIC8vIHdpZHRoOiA1MHB4OwogIC8vIGhlaWdodDogNTBweDsKfQouY2hpbGQgewogIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAwLCAwLCAwLjUpOwogIHdpZHRoOiAxMDBweDsKICBoZWlnaHQ6IDEwMHB4Owp9Ci5jaGlsZDIgewogIC8vIGRpc3BsYXk6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMCwgMC41KTsKICB3aWR0aDogMjAwcHg7CiAgaGVpZ2h0OiAyMDBweDsKfQo8L3N0eWxlPgo=\""],"names":["CssPositionDemo"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const I="data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7Ij4KICAgIDx0Zy1tYXAgc3R5bGU9ImZsZXg6IDE7IiB2LWJpbmQ9Im1hcEJpbmRWYWx1ZXMiIHR5cGU9Imdvb2dsZSI+CiAgICAgIDxUZ0hlYXRtYXAgOmRhdGE9ImRhdGEiIHYtYmluZD0ic3RhdGUiIC8+CiAgICA8L3RnLW1hcD4KICAgIDx0Zy1tYXAgc3R5bGU9ImZsZXg6IDE7IiB2LWJpbmQ9Im1hcEJpbmRWYWx1ZXMiIHR5cGU9ImJhaWR1Ij4KICAgICAgPFRnSGVhdG1hcCA6ZGF0YT0iZGF0YSIgdi1iaW5kPSJzdGF0ZSIgLz4KICAgIDwvdGctbWFwPgogICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTk3KTsiPgogICAgICA8bGFiZWw+IG9wYWNpdHkgPGlucHV0IHYtbW9kZWw9InN0YXRlLm9wYWNpdHkiIHR5cGU9Im51bWJlciIgc3RlcD0iMC4xIj4gPC9sYWJlbD48YnI+CiAgICAgIDxsYWJlbD4gcmFkaXVzIDxpbnB1dCB2LW1vZGVsPSJzdGF0ZS5yYWRpdXMiIHR5cGU9Im51bWJlciIgc3RlcD0iMTAiPiA8L2xhYmVsPjxicj4KICAgICAg6Ieq5a6a5LmJZ3JhZGllbnQ6CiAgICAgIDxkaXY+CiAgICAgICAgPGxhYmVsPmRlZmF1bHQgPGlucHV0IHYtbW9kZWw9ImdyYWRpZW50TmFtZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJkZWZhdWx0Ij48L2xhYmVsPjxicj4KICAgICAgICA8bGFiZWw+Z29vZ2xlIDxpbnB1dCB2LW1vZGVsPSJncmFkaWVudE5hbWUiIHR5cGU9InJhZGlvIiB2YWx1ZT0iZ29vZ2xlIj48L2xhYmVsPjxicj4KICAgICAgICA8bGFiZWw+YmFpZHUgPGlucHV0IHYtbW9kZWw9ImdyYWRpZW50TmFtZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJiYWlkdSI+PC9sYWJlbD48YnI+CiAgICAgICAgPGxhYmVsPmN1c3RvbSA8aW5wdXQgdi1tb2RlbD0iZ3JhZGllbnROYW1lIiB0eXBlPSJyYWRpbyIgdmFsdWU9ImN1c3RvbSI+PC9sYWJlbD48YnI+CiAgICAgIDwvZGl2Pjxicj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L3RlbXBsYXRlPgoKPHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+CmltcG9ydCB7IGNvbXB1dGVkLCByZWFjdGl2ZSwgcmVmIH0gZnJvbSAndnVlJwppbXBvcnQgeyBDb29yZFR5cGUsIExhdExuZywgVGdIZWF0bWFwLCBUZ01hcCwgVGdNYXBUeXBlLCB0eXBlIEhlYXRtYXBPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cycKaW1wb3J0IHsgaGVhdG1hcERhdGEgfSBmcm9tICcuL2RhdGEnCmltcG9ydCB7IHVzZURlbW9NYXAgfSBmcm9tICcuL2RlbW8tbWFwLXV0aWxzJwoKY29uc3QgeyBtYXBCaW5kVmFsdWVzIH0gPSB1c2VEZW1vTWFwKHsgdHlwZTogVGdNYXBUeXBlLmdvb2dsZSwgZGVmYXVsdENlbnRlcjogTGF0TG5nLmZyb21MbmdMYXQoMTE2LjQxODI2MSwgMzkuOTIxOTg0LCBDb29yZFR5cGUuYmQwOSksIGRlZmF1bHRab29tOiAxNCB9KQoKY29uc3QgZGF0YSA9IHJlZihoZWF0bWFwRGF0YSkKCi8qKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL2xheWVyLWhlYXRtYXAgKi8KY29uc3QgR1JBRElFTlRfQVJSQVlfQ1VTVE9NID0gWwogICdyZ2JhKDAsIDI1NSwgMjU1LCAwKScsCiAgJ3JnYmEoMCwgMjU1LCAyNTUsIDEpJywKICAncmdiYSgwLCAxOTEsIDI1NSwgMSknLAogICdyZ2JhKDAsIDEyNywgMjU1LCAxKScsCiAgJ3JnYmEoMCwgNjMsIDI1NSwgMSknLAogICdyZ2JhKDAsIDAsIDI1NSwgMSknLAogICdyZ2JhKDAsIDAsIDIyMywgMSknLAogICdyZ2JhKDAsIDAsIDE5MSwgMSknLAogICdyZ2JhKDAsIDAsIDE1OSwgMSknLAogICdyZ2JhKDAsIDAsIDEyNywgMSknLAogICdyZ2JhKDYzLCAwLCA5MSwgMSknLAogICdyZ2JhKDEyNywgMCwgNjMsIDEpJywKICAncmdiYSgxOTEsIDAsIDMxLCAxKScsCiAgJ3JnYmEoMjU1LCAwLCAwLCAxKScsCl0KLyoqIEBzZWUgaHR0cHM6Ly9naXMuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzI0NjMyMi9nZXQtdGhlLWludmVyc2Utb2YtZGVmYXVsdC1oZWF0LW1hcC1ncmFkaWVudC1pbi1nb29nbGUtbWFwcy1qYXZhc2NyaXB0LWFwaSAqLwpjb25zdCBHUkFESUVOVF9BUlJBWV9HT09HTEUgPSBbCiAgJ3JnYmEoMTAyLCAyNTUsIDAsIDApJywKICAncmdiYSgxMDIsIDI1NSwgMCwgMSknLAogICdyZ2JhKDE0NywgMjU1LCAwLCAxKScsCiAgJ3JnYmEoMTkzLCAyNTUsIDAsIDEpJywKICAncmdiYSgyMzgsIDI1NSwgMCwgMSknLAogICdyZ2JhKDI0NCwgMjI3LCAwLCAxKScsCiAgJ3JnYmEoMjQ5LCAxOTgsIDAsIDEpJywKICAncmdiYSgyNTUsIDE3MCwgMCwgMSknLAogICdyZ2JhKDI1NSwgMTEzLCAwLCAxKScsCiAgJ3JnYmEoMjU1LCA1NywgMCwgMSknLAogICdyZ2JhKDI1NSwgMCwgMCwgMSknLApdCmNvbnN0IGdyYWRpZW50QXJyYXlUb09iamVjdCA9IChhcnI6IHN0cmluZ1tdKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoYXJyLm1hcCgodiwgaW5kZXgpID0+IHsKICBjb25zdCB4ID0gaW5kZXggLyAoR1JBRElFTlRfQVJSQVlfQ1VTVE9NLmxlbmd0aCAtIDEpCiAgcmV0dXJuIFtNYXRoLnBvdyh4LCAxIC8gMyksIHZdCn0pKQoKY29uc3QgR1JBRElFTlRfTUFQID0gewogIGJhaWR1OiB7CiAgICAwLjA6ICdyZ2JhKDAsIDI1NSwgMjU1LCAwKScsCiAgICAwLjQ1OiAncmdiKDAsMCwyNTUpJywKICAgIDAuNTU6ICdyZ2IoMCwyNTUsMjU1KScsCiAgICAwLjY1OiAncmdiKDAsMjU1LDApJywKICAgIDAuOTU6ICd5ZWxsb3cnLAogICAgMS4wOiAncmdiKDI1NSwwLDApJywKICB9LAogIGdvb2dsZTogZ3JhZGllbnRBcnJheVRvT2JqZWN0KEdSQURJRU5UX0FSUkFZX0dPT0dMRSksCiAgY3VzdG9tOiBncmFkaWVudEFycmF5VG9PYmplY3QoR1JBRElFTlRfQVJSQVlfQ1VTVE9NKSwKICBkZWZhdWx0OiB1bmRlZmluZWQsCn0KCmNvbnN0IGdyYWRpZW50TmFtZSA9IHJlZjxrZXlvZiB0eXBlb2YgR1JBRElFTlRfTUFQPignZGVmYXVsdCcpCgpjb25zdCBzdGF0ZTogUGFydGlhbDxIZWF0bWFwT3B0aW9ucz4gPSByZWFjdGl2ZSh7CiAgLy8gcmFkaXVzOiAyMCwKICBncmFkaWVudDogY29tcHV0ZWQoKCkgPT4gKEdSQURJRU5UX01BUFtncmFkaWVudE5hbWUudmFsdWVdKSksCn0pCgo8L3NjcmlwdD4K";export{I as default};
|
|
2
|
-
//# sourceMappingURL=HeatmapDemo-CKEH0W3g.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HeatmapDemo-CKEH0W3g.js","sources":["../../src/views/map/HeatmapDemo.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7Ij4KICAgIDx0Zy1tYXAgc3R5bGU9ImZsZXg6IDE7IiB2LWJpbmQ9Im1hcEJpbmRWYWx1ZXMiIHR5cGU9Imdvb2dsZSI+CiAgICAgIDxUZ0hlYXRtYXAgOmRhdGE9ImRhdGEiIHYtYmluZD0ic3RhdGUiIC8+CiAgICA8L3RnLW1hcD4KICAgIDx0Zy1tYXAgc3R5bGU9ImZsZXg6IDE7IiB2LWJpbmQ9Im1hcEJpbmRWYWx1ZXMiIHR5cGU9ImJhaWR1Ij4KICAgICAgPFRnSGVhdG1hcCA6ZGF0YT0iZGF0YSIgdi1iaW5kPSJzdGF0ZSIgLz4KICAgIDwvdGctbWFwPgogICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTk3KTsiPgogICAgICA8bGFiZWw+IG9wYWNpdHkgPGlucHV0IHYtbW9kZWw9InN0YXRlLm9wYWNpdHkiIHR5cGU9Im51bWJlciIgc3RlcD0iMC4xIj4gPC9sYWJlbD48YnI+CiAgICAgIDxsYWJlbD4gcmFkaXVzIDxpbnB1dCB2LW1vZGVsPSJzdGF0ZS5yYWRpdXMiIHR5cGU9Im51bWJlciIgc3RlcD0iMTAiPiA8L2xhYmVsPjxicj4KICAgICAg6Ieq5a6a5LmJZ3JhZGllbnQ6CiAgICAgIDxkaXY+CiAgICAgICAgPGxhYmVsPmRlZmF1bHQgPGlucHV0IHYtbW9kZWw9ImdyYWRpZW50TmFtZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJkZWZhdWx0Ij48L2xhYmVsPjxicj4KICAgICAgICA8bGFiZWw+Z29vZ2xlIDxpbnB1dCB2LW1vZGVsPSJncmFkaWVudE5hbWUiIHR5cGU9InJhZGlvIiB2YWx1ZT0iZ29vZ2xlIj48L2xhYmVsPjxicj4KICAgICAgICA8bGFiZWw+YmFpZHUgPGlucHV0IHYtbW9kZWw9ImdyYWRpZW50TmFtZSIgdHlwZT0icmFkaW8iIHZhbHVlPSJiYWlkdSI+PC9sYWJlbD48YnI+CiAgICAgICAgPGxhYmVsPmN1c3RvbSA8aW5wdXQgdi1tb2RlbD0iZ3JhZGllbnROYW1lIiB0eXBlPSJyYWRpbyIgdmFsdWU9ImN1c3RvbSI+PC9sYWJlbD48YnI+CiAgICAgIDwvZGl2Pjxicj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L3RlbXBsYXRlPgoKPHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+CmltcG9ydCB7IGNvbXB1dGVkLCByZWFjdGl2ZSwgcmVmIH0gZnJvbSAndnVlJwppbXBvcnQgeyBDb29yZFR5cGUsIExhdExuZywgVGdIZWF0bWFwLCBUZ01hcCwgVGdNYXBUeXBlLCB0eXBlIEhlYXRtYXBPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cycKaW1wb3J0IHsgaGVhdG1hcERhdGEgfSBmcm9tICcuL2RhdGEnCmltcG9ydCB7IHVzZURlbW9NYXAgfSBmcm9tICcuL2RlbW8tbWFwLXV0aWxzJwoKY29uc3QgeyBtYXBCaW5kVmFsdWVzIH0gPSB1c2VEZW1vTWFwKHsgdHlwZTogVGdNYXBUeXBlLmdvb2dsZSwgZGVmYXVsdENlbnRlcjogTGF0TG5nLmZyb21MbmdMYXQoMTE2LjQxODI2MSwgMzkuOTIxOTg0LCBDb29yZFR5cGUuYmQwOSksIGRlZmF1bHRab29tOiAxNCB9KQoKY29uc3QgZGF0YSA9IHJlZihoZWF0bWFwRGF0YSkKCi8qKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL21hcHMvZG9jdW1lbnRhdGlvbi9qYXZhc2NyaXB0L2V4YW1wbGVzL2xheWVyLWhlYXRtYXAgKi8KY29uc3QgR1JBRElFTlRfQVJSQVlfQ1VTVE9NID0gWwogICdyZ2JhKDAsIDI1NSwgMjU1LCAwKScsCiAgJ3JnYmEoMCwgMjU1LCAyNTUsIDEpJywKICAncmdiYSgwLCAxOTEsIDI1NSwgMSknLAogICdyZ2JhKDAsIDEyNywgMjU1LCAxKScsCiAgJ3JnYmEoMCwgNjMsIDI1NSwgMSknLAogICdyZ2JhKDAsIDAsIDI1NSwgMSknLAogICdyZ2JhKDAsIDAsIDIyMywgMSknLAogICdyZ2JhKDAsIDAsIDE5MSwgMSknLAogICdyZ2JhKDAsIDAsIDE1OSwgMSknLAogICdyZ2JhKDAsIDAsIDEyNywgMSknLAogICdyZ2JhKDYzLCAwLCA5MSwgMSknLAogICdyZ2JhKDEyNywgMCwgNjMsIDEpJywKICAncmdiYSgxOTEsIDAsIDMxLCAxKScsCiAgJ3JnYmEoMjU1LCAwLCAwLCAxKScsCl0KLyoqIEBzZWUgaHR0cHM6Ly9naXMuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzI0NjMyMi9nZXQtdGhlLWludmVyc2Utb2YtZGVmYXVsdC1oZWF0LW1hcC1ncmFkaWVudC1pbi1nb29nbGUtbWFwcy1qYXZhc2NyaXB0LWFwaSAqLwpjb25zdCBHUkFESUVOVF9BUlJBWV9HT09HTEUgPSBbCiAgJ3JnYmEoMTAyLCAyNTUsIDAsIDApJywKICAncmdiYSgxMDIsIDI1NSwgMCwgMSknLAogICdyZ2JhKDE0NywgMjU1LCAwLCAxKScsCiAgJ3JnYmEoMTkzLCAyNTUsIDAsIDEpJywKICAncmdiYSgyMzgsIDI1NSwgMCwgMSknLAogICdyZ2JhKDI0NCwgMjI3LCAwLCAxKScsCiAgJ3JnYmEoMjQ5LCAxOTgsIDAsIDEpJywKICAncmdiYSgyNTUsIDE3MCwgMCwgMSknLAogICdyZ2JhKDI1NSwgMTEzLCAwLCAxKScsCiAgJ3JnYmEoMjU1LCA1NywgMCwgMSknLAogICdyZ2JhKDI1NSwgMCwgMCwgMSknLApdCmNvbnN0IGdyYWRpZW50QXJyYXlUb09iamVjdCA9IChhcnI6IHN0cmluZ1tdKSA9PiBPYmplY3QuZnJvbUVudHJpZXMoYXJyLm1hcCgodiwgaW5kZXgpID0+IHsKICBjb25zdCB4ID0gaW5kZXggLyAoR1JBRElFTlRfQVJSQVlfQ1VTVE9NLmxlbmd0aCAtIDEpCiAgcmV0dXJuIFtNYXRoLnBvdyh4LCAxIC8gMyksIHZdCn0pKQoKY29uc3QgR1JBRElFTlRfTUFQID0gewogIGJhaWR1OiB7CiAgICAwLjA6ICdyZ2JhKDAsIDI1NSwgMjU1LCAwKScsCiAgICAwLjQ1OiAncmdiKDAsMCwyNTUpJywKICAgIDAuNTU6ICdyZ2IoMCwyNTUsMjU1KScsCiAgICAwLjY1OiAncmdiKDAsMjU1LDApJywKICAgIDAuOTU6ICd5ZWxsb3cnLAogICAgMS4wOiAncmdiKDI1NSwwLDApJywKICB9LAogIGdvb2dsZTogZ3JhZGllbnRBcnJheVRvT2JqZWN0KEdSQURJRU5UX0FSUkFZX0dPT0dMRSksCiAgY3VzdG9tOiBncmFkaWVudEFycmF5VG9PYmplY3QoR1JBRElFTlRfQVJSQVlfQ1VTVE9NKSwKICBkZWZhdWx0OiB1bmRlZmluZWQsCn0KCmNvbnN0IGdyYWRpZW50TmFtZSA9IHJlZjxrZXlvZiB0eXBlb2YgR1JBRElFTlRfTUFQPignZGVmYXVsdCcpCgpjb25zdCBzdGF0ZTogUGFydGlhbDxIZWF0bWFwT3B0aW9ucz4gPSByZWFjdGl2ZSh7CiAgLy8gcmFkaXVzOiAyMCwKICBncmFkaWVudDogY29tcHV0ZWQoKCkgPT4gKEdSQURJRU5UX01BUFtncmFkaWVudE5hbWUudmFsdWVdKSksCn0pCgo8L3NjcmlwdD4K\""],"names":["HeatmapDemo"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const I="data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDx0Zy1tYXAKICAgIDprZXk9Im1hcFR5cGUgKyBtdWx0aSIKICAgIHYtbW9kZWw6Y2VudGVyPSJjZW50ZXIiCiAgICB2LW1vZGVsOnpvb209Inpvb20iCiAgICA6dHlwZT0ibWFwVHlwZSIKICAgIDppbmZvLXdpbmRvdy1tb2RlPSJtdWx0aSA/ICdtdWx0aScgOiAnc2luZ2xlJyIKICA+CiAgICA8dGVtcGxhdGUgdi1pZj0ibXVsdGkiPgogICAgICA8dGctaW5mby13aW5kb3cgdi1tb2RlbDpzaG93PSJ3aW5kb3cxIiA6cG9zaXRpb249InBvc2l0aW9uIj4KICAgICAgICB3aW5kb3cxOiB7eyB3aW5kb3cxIH19CiAgICAgICAgPGgyPlRpdGxlPC9oMj4KICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj4KICAgICAgPC90Zy1pbmZvLXdpbmRvdz4KICAgICAgPHRnLWluZm8td2luZG93IHYtbW9kZWw6c2hvdz0id2luZG93MyIgOnBvc2l0aW9uPSJwb3NpdGlvbiI+CiAgICAgICAgd2luZG93Mzoge3sgd2luZG93MyB9fQogICAgICA8L3RnLWluZm8td2luZG93PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8dGctbWFya2VyIDpwb3NpdGlvbj0icG9pbnRzWzJdIiA6aWNvbj0iY3VycmVudEljb24iPgogICAgICA8dGctaW5mby13aW5kb3cgdi1tb2RlbDpzaG93PSJ3aW5kb3cyIj4KICAgICAgICA8ZGl2IEBjbGljaz0ib25JbmZvV2luZG93Q29udGVudENsaWNrIj4KICAgICAgICAgIHdpbmRvdzI6IHt7IHdpbmRvdzIgfX0KICAgICAgICA8L2Rpdj4KICAgICAgPC90Zy1pbmZvLXdpbmRvdz4KICAgICAgPHRnLWluZm8tYm94IHYtbW9kZWw6c2hvdz0iYm94NSI+CiAgICAgICAgYm94NToge3sgYm94NSB9fQogICAgICA8L3RnLWluZm8tYm94PgogICAgPC90Zy1tYXJrZXI+CgogICAgPHRnLW1hcmtlciA6cG9zaXRpb249InBvaW50c1swXSIgOmljb249ImN1cnJlbnRJY29uIj4KICAgICAgPHRnLWluZm8tYm94IHYtbW9kZWw6c2hvdz0iYm94NCIgOm9mZnNldD0ib2Zmc2V0IiBib3JkZXItY2xhc3M9ImN1c3RvbS1pbmZvLWJveCIgQGNsb3NlY2xpY2s9ImV2ZW50TG9nIj4KICAgICAgICBib3g0OiB7eyBib3g0IH19CiAgICAgICAge3sgbXVsdGlMaW5lVGV4dCB9fQogICAgICA8L3RnLWluZm8tYm94PgogICAgPC90Zy1tYXJrZXI+CgogICAgPHRnLW1hcC13aWRnZXQgYm90dG9tPSIwIiByaWdodD0iMCIgc3R5bGU9ImJhY2tncm91bmQ6d2hpdGU7dXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJtdWx0aSIgdHlwZT0iY2hlY2tib3giPiBtdWx0aTwvbGFiZWw+CiAgICAgIDxidXR0b24gQGNsaWNrPSJvblNob3dDbGljayI+IHRvZ2dsZSA8L2J1dHRvbj4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJ3aW5kb3cxIiA6ZGlzYWJsZWQ9IiFtdWx0aSIgdHlwZT0iY2hlY2tib3giPndpbmRvdzE8L2xhYmVsPgogICAgICA8bGFiZWw+PGlucHV0IHYtbW9kZWw9IndpbmRvdzIiIHR5cGU9ImNoZWNrYm94Ij53aW5kb3cyPC9sYWJlbD4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJ3aW5kb3czIiA6ZGlzYWJsZWQ9IiFtdWx0aSIgdHlwZT0iY2hlY2tib3giPndpbmRvdzM8L2xhYmVsPgogICAgICA8bGFiZWw+PGlucHV0IHYtbW9kZWw9ImJveDQiIHR5cGU9ImNoZWNrYm94Ij5ib3g0PC9sYWJlbD4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJib3g1IiB0eXBlPSJjaGVja2JveCI+Ym94NTwvbGFiZWw+CiAgICAgIDxzZWxlY3Qgdi1tb2RlbD0icG9zaXRpb24iPgogICAgICAgIDxvcHRpb24gdi1mb3I9InBvaW50IGluIHBvaW50cyIgOmtleT0ic3RyaW5naWZ5KHBvaW50KSIgOnZhbHVlPSJwb2ludCI+CiAgICAgICAgICB7eyBwb2ludCB9fQogICAgICAgIDwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgICAgPHNlbGVjdCB2LW1vZGVsPSJjdXJyZW50SWNvbiI+CiAgICAgICAgPG9wdGlvbiA6dmFsdWU9Im51bGwiPgogICAgICAgICAgbnVsbAogICAgICAgIDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdi1mb3I9Imljb24gaW4gaWNvbnMiIDprZXk9InN0cmluZ2lmeShpY29uKSIgOnZhbHVlPSJpY29uIj4KICAgICAgICAgIHt7ICd1cmwnIGluIGljb24gPyBpY29uLnVybC5zcGxpdCgnLycpLnNsaWNlKC0xKVswXSA6IGljb24ucGF0aC50b1N0cmluZygpLnN1YnN0cmluZygwLCA1KSB9fQogICAgICAgIDwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgIDwvdGctbWFwLXdpZGdldD4KICAgIDx0ZW1wbGF0ZSAjb3ZlcmxheT4KICAgICAgPHRnLW1hcC13aWRnZXQ+CiAgICAgICAgPE1hcFR5cGVTZWxlY3QgLz4KICAgICAgPC90Zy1tYXAtd2lkZ2V0PgogICAgPC90ZW1wbGF0ZT4KICA8L3RnLW1hcD4KPC90ZW1wbGF0ZT4KCjxzY3JpcHQgbGFuZz0idHMiPgppbXBvcnQgTWFwVHlwZVNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvb3RoZXIvTWFwVHlwZVNlbGVjdC52dWUnCmltcG9ydCB7IE9iamVjdHMgfSBmcm9tICd0Zy1tYXAtY29yZScKaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJwppbXBvcnQgeyBUZ0luZm9Cb3gsIFRnSW5mb1dpbmRvdywgVGdNYXAsIFRnTWFwV2lkZ2V0LCBUZ01hcmtlciwgdXNlRXZlbnRMb2dNZXRob2RzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cycKaW1wb3J0IHsgc3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZScKaW1wb3J0IHsgaWNvbnMsIHBvaW50cyB9IGZyb20gJy4vZGF0YScKCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7CiAgY29tcG9uZW50czogewogICAgVGdJbmZvQm94LAogICAgVGdJbmZvV2luZG93LAogICAgTWFwVHlwZVNlbGVjdCwKICAgIFRnTWFya2VyLAogICAgVGdNYXBXaWRnZXQsCiAgICBUZ01hcCwKICB9LAogIHNldHVwKCkgewogICAgY29uc3QgJCA9IHVzZUV2ZW50TG9nTWV0aG9kcygpCiAgICByZXR1cm4gewogICAgICAuLi4kLAogICAgfQogIH0sCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHdpbmRvdzE6IHRydWUsCiAgICAgIHdpbmRvdzI6IHRydWUsCiAgICAgIHdpbmRvdzM6IHRydWUsCiAgICAgIGJveDQ6IGZhbHNlLAogICAgICBib3g1OiBmYWxzZSwKICAgICAgcG9zaXRpb246IHBvaW50c1swXSwKICAgICAgcG9pbnRzLAogICAgICBjZW50ZXI6IHBvaW50c1swXSwKICAgICAgem9vbTogNSwKICAgICAgaWNvbnM6IGljb25zLAogICAgICBjdXJyZW50SWNvbjogdW5kZWZpbmVkLAogICAgICBtdWx0aTogZmFsc2UsCiAgICAgIG9mZnNldDogeyB4OiAwLCB5OiAtMTAgfSwKICAgICAgbXVsdGlMaW5lVGV4dDogJ3Nsa2RmamFpZXdjbmFzeGRqZm5yaGZnY2RzZGJneG13ZXhmZ3dlcmZncmh3ZW5jZmRzZ3Njamdmc2htZ2h4a2d0cmpnaGNzZmhmZGdia2pza3dlaGVnZmRma2duZ3ZmampoZmRqY2dyZWJna2RmY2dmZGdraG5ydmhnZGNkZmpnZmRkZGZqY2hydmVmamNuaGZkc2ZkamNlZ3JmZ2doaGpnamZrZGZrZmRrZmtma2ZoZmtma2RsZW9laWVqeG1uc2hzYWdka2ZsZ2hwZ2lmdXd5dDM2Mzc0aHhnd3RlanJmdTQ3JywKICAgIH0KICB9LAogIGNvbXB1dGVkOiB7CiAgICBtYXBUeXBlKCkgewogICAgICByZXR1cm4gc3RvcmUuc3RhdGUubWFwVHlwZQogICAgfSwKICB9LAogIG1ldGhvZHM6IHsKICAgIHN0cmluZ2lmeTogT2JqZWN0cy50b0pzb25TYWZlbHksCiAgICBvblNob3dDbGljaygpIHsKICAgICAgdGhpcy53aW5kb3cxID0gIXRoaXMud2luZG93MQogICAgICB0aGlzLndpbmRvdzIgPSAhdGhpcy53aW5kb3cyCiAgICAgIHRoaXMud2luZG93MyA9ICF0aGlzLndpbmRvdzMKICAgICAgdGhpcy5ib3g0ID0gIXRoaXMuYm94NAogICAgICB0aGlzLmJveDUgPSAhdGhpcy5ib3g1CiAgICB9LAogICAgb25JbmZvV2luZG93Q29udGVudENsaWNrKCkgewogICAgICBjb25zb2xlLmxvZygnb25JbmZvV2luZG93Q29udGVudENsaWNrJykKICAgIH0sCiAgfSwKfSkKPC9zY3JpcHQ+CjxzdHlsZT4KLmN1c3RvbS1pbmZvLWJveCB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7Cn0KPC9zdHlsZT4K";export{I as default};
|
|
2
|
-
//# sourceMappingURL=InfoDemo-BSp_czCk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InfoDemo-BSp_czCk.js","sources":["../../src/views/map/InfoDemo.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDx0Zy1tYXAKICAgIDprZXk9Im1hcFR5cGUgKyBtdWx0aSIKICAgIHYtbW9kZWw6Y2VudGVyPSJjZW50ZXIiCiAgICB2LW1vZGVsOnpvb209Inpvb20iCiAgICA6dHlwZT0ibWFwVHlwZSIKICAgIDppbmZvLXdpbmRvdy1tb2RlPSJtdWx0aSA/ICdtdWx0aScgOiAnc2luZ2xlJyIKICA+CiAgICA8dGVtcGxhdGUgdi1pZj0ibXVsdGkiPgogICAgICA8dGctaW5mby13aW5kb3cgdi1tb2RlbDpzaG93PSJ3aW5kb3cxIiA6cG9zaXRpb249InBvc2l0aW9uIj4KICAgICAgICB3aW5kb3cxOiB7eyB3aW5kb3cxIH19CiAgICAgICAgPGgyPlRpdGxlPC9oMj4KICAgICAgICA8ZGl2PkNvbnRlbnQ8L2Rpdj4KICAgICAgPC90Zy1pbmZvLXdpbmRvdz4KICAgICAgPHRnLWluZm8td2luZG93IHYtbW9kZWw6c2hvdz0id2luZG93MyIgOnBvc2l0aW9uPSJwb3NpdGlvbiI+CiAgICAgICAgd2luZG93Mzoge3sgd2luZG93MyB9fQogICAgICA8L3RnLWluZm8td2luZG93PgogICAgPC90ZW1wbGF0ZT4KCiAgICA8dGctbWFya2VyIDpwb3NpdGlvbj0icG9pbnRzWzJdIiA6aWNvbj0iY3VycmVudEljb24iPgogICAgICA8dGctaW5mby13aW5kb3cgdi1tb2RlbDpzaG93PSJ3aW5kb3cyIj4KICAgICAgICA8ZGl2IEBjbGljaz0ib25JbmZvV2luZG93Q29udGVudENsaWNrIj4KICAgICAgICAgIHdpbmRvdzI6IHt7IHdpbmRvdzIgfX0KICAgICAgICA8L2Rpdj4KICAgICAgPC90Zy1pbmZvLXdpbmRvdz4KICAgICAgPHRnLWluZm8tYm94IHYtbW9kZWw6c2hvdz0iYm94NSI+CiAgICAgICAgYm94NToge3sgYm94NSB9fQogICAgICA8L3RnLWluZm8tYm94PgogICAgPC90Zy1tYXJrZXI+CgogICAgPHRnLW1hcmtlciA6cG9zaXRpb249InBvaW50c1swXSIgOmljb249ImN1cnJlbnRJY29uIj4KICAgICAgPHRnLWluZm8tYm94IHYtbW9kZWw6c2hvdz0iYm94NCIgOm9mZnNldD0ib2Zmc2V0IiBib3JkZXItY2xhc3M9ImN1c3RvbS1pbmZvLWJveCIgQGNsb3NlY2xpY2s9ImV2ZW50TG9nIj4KICAgICAgICBib3g0OiB7eyBib3g0IH19CiAgICAgICAge3sgbXVsdGlMaW5lVGV4dCB9fQogICAgICA8L3RnLWluZm8tYm94PgogICAgPC90Zy1tYXJrZXI+CgogICAgPHRnLW1hcC13aWRnZXQgYm90dG9tPSIwIiByaWdodD0iMCIgc3R5bGU9ImJhY2tncm91bmQ6d2hpdGU7dXNlci1zZWxlY3Q6IG5vbmU7Ij4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJtdWx0aSIgdHlwZT0iY2hlY2tib3giPiBtdWx0aTwvbGFiZWw+CiAgICAgIDxidXR0b24gQGNsaWNrPSJvblNob3dDbGljayI+IHRvZ2dsZSA8L2J1dHRvbj4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJ3aW5kb3cxIiA6ZGlzYWJsZWQ9IiFtdWx0aSIgdHlwZT0iY2hlY2tib3giPndpbmRvdzE8L2xhYmVsPgogICAgICA8bGFiZWw+PGlucHV0IHYtbW9kZWw9IndpbmRvdzIiIHR5cGU9ImNoZWNrYm94Ij53aW5kb3cyPC9sYWJlbD4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJ3aW5kb3czIiA6ZGlzYWJsZWQ9IiFtdWx0aSIgdHlwZT0iY2hlY2tib3giPndpbmRvdzM8L2xhYmVsPgogICAgICA8bGFiZWw+PGlucHV0IHYtbW9kZWw9ImJveDQiIHR5cGU9ImNoZWNrYm94Ij5ib3g0PC9sYWJlbD4KICAgICAgPGxhYmVsPjxpbnB1dCB2LW1vZGVsPSJib3g1IiB0eXBlPSJjaGVja2JveCI+Ym94NTwvbGFiZWw+CiAgICAgIDxzZWxlY3Qgdi1tb2RlbD0icG9zaXRpb24iPgogICAgICAgIDxvcHRpb24gdi1mb3I9InBvaW50IGluIHBvaW50cyIgOmtleT0ic3RyaW5naWZ5KHBvaW50KSIgOnZhbHVlPSJwb2ludCI+CiAgICAgICAgICB7eyBwb2ludCB9fQogICAgICAgIDwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgICAgPHNlbGVjdCB2LW1vZGVsPSJjdXJyZW50SWNvbiI+CiAgICAgICAgPG9wdGlvbiA6dmFsdWU9Im51bGwiPgogICAgICAgICAgbnVsbAogICAgICAgIDwvb3B0aW9uPgogICAgICAgIDxvcHRpb24gdi1mb3I9Imljb24gaW4gaWNvbnMiIDprZXk9InN0cmluZ2lmeShpY29uKSIgOnZhbHVlPSJpY29uIj4KICAgICAgICAgIHt7ICd1cmwnIGluIGljb24gPyBpY29uLnVybC5zcGxpdCgnLycpLnNsaWNlKC0xKVswXSA6IGljb24ucGF0aC50b1N0cmluZygpLnN1YnN0cmluZygwLCA1KSB9fQogICAgICAgIDwvb3B0aW9uPgogICAgICA8L3NlbGVjdD4KICAgIDwvdGctbWFwLXdpZGdldD4KICAgIDx0ZW1wbGF0ZSAjb3ZlcmxheT4KICAgICAgPHRnLW1hcC13aWRnZXQ+CiAgICAgICAgPE1hcFR5cGVTZWxlY3QgLz4KICAgICAgPC90Zy1tYXAtd2lkZ2V0PgogICAgPC90ZW1wbGF0ZT4KICA8L3RnLW1hcD4KPC90ZW1wbGF0ZT4KCjxzY3JpcHQgbGFuZz0idHMiPgppbXBvcnQgTWFwVHlwZVNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvb3RoZXIvTWFwVHlwZVNlbGVjdC52dWUnCmltcG9ydCB7IE9iamVjdHMgfSBmcm9tICd0Zy1tYXAtY29yZScKaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSAndnVlJwppbXBvcnQgeyBUZ0luZm9Cb3gsIFRnSW5mb1dpbmRvdywgVGdNYXAsIFRnTWFwV2lkZ2V0LCBUZ01hcmtlciwgdXNlRXZlbnRMb2dNZXRob2RzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cycKaW1wb3J0IHsgc3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZScKaW1wb3J0IHsgaWNvbnMsIHBvaW50cyB9IGZyb20gJy4vZGF0YScKCmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7CiAgY29tcG9uZW50czogewogICAgVGdJbmZvQm94LAogICAgVGdJbmZvV2luZG93LAogICAgTWFwVHlwZVNlbGVjdCwKICAgIFRnTWFya2VyLAogICAgVGdNYXBXaWRnZXQsCiAgICBUZ01hcCwKICB9LAogIHNldHVwKCkgewogICAgY29uc3QgJCA9IHVzZUV2ZW50TG9nTWV0aG9kcygpCiAgICByZXR1cm4gewogICAgICAuLi4kLAogICAgfQogIH0sCiAgZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHdpbmRvdzE6IHRydWUsCiAgICAgIHdpbmRvdzI6IHRydWUsCiAgICAgIHdpbmRvdzM6IHRydWUsCiAgICAgIGJveDQ6IGZhbHNlLAogICAgICBib3g1OiBmYWxzZSwKICAgICAgcG9zaXRpb246IHBvaW50c1swXSwKICAgICAgcG9pbnRzLAogICAgICBjZW50ZXI6IHBvaW50c1swXSwKICAgICAgem9vbTogNSwKICAgICAgaWNvbnM6IGljb25zLAogICAgICBjdXJyZW50SWNvbjogdW5kZWZpbmVkLAogICAgICBtdWx0aTogZmFsc2UsCiAgICAgIG9mZnNldDogeyB4OiAwLCB5OiAtMTAgfSwKICAgICAgbXVsdGlMaW5lVGV4dDogJ3Nsa2RmamFpZXdjbmFzeGRqZm5yaGZnY2RzZGJneG13ZXhmZ3dlcmZncmh3ZW5jZmRzZ3Njamdmc2htZ2h4a2d0cmpnaGNzZmhmZGdia2pza3dlaGVnZmRma2duZ3ZmampoZmRqY2dyZWJna2RmY2dmZGdraG5ydmhnZGNkZmpnZmRkZGZqY2hydmVmamNuaGZkc2ZkamNlZ3JmZ2doaGpnamZrZGZrZmRrZmtma2ZoZmtma2RsZW9laWVqeG1uc2hzYWdka2ZsZ2hwZ2lmdXd5dDM2Mzc0aHhnd3RlanJmdTQ3JywKICAgIH0KICB9LAogIGNvbXB1dGVkOiB7CiAgICBtYXBUeXBlKCkgewogICAgICByZXR1cm4gc3RvcmUuc3RhdGUubWFwVHlwZQogICAgfSwKICB9LAogIG1ldGhvZHM6IHsKICAgIHN0cmluZ2lmeTogT2JqZWN0cy50b0pzb25TYWZlbHksCiAgICBvblNob3dDbGljaygpIHsKICAgICAgdGhpcy53aW5kb3cxID0gIXRoaXMud2luZG93MQogICAgICB0aGlzLndpbmRvdzIgPSAhdGhpcy53aW5kb3cyCiAgICAgIHRoaXMud2luZG93MyA9ICF0aGlzLndpbmRvdzMKICAgICAgdGhpcy5ib3g0ID0gIXRoaXMuYm94NAogICAgICB0aGlzLmJveDUgPSAhdGhpcy5ib3g1CiAgICB9LAogICAgb25JbmZvV2luZG93Q29udGVudENsaWNrKCkgewogICAgICBjb25zb2xlLmxvZygnb25JbmZvV2luZG93Q29udGVudENsaWNrJykKICAgIH0sCiAgfSwKfSkKPC9zY3JpcHQ+CjxzdHlsZT4KLmN1c3RvbS1pbmZvLWJveCB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmVkICFpbXBvcnRhbnQ7Cn0KPC9zdHlsZT4K\""],"names":["InfoDemo"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const c="data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxMaWZlY3ljbGVCdWcgLz4KPC90ZW1wbGF0ZT4KPHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+CmltcG9ydCBMaWZlY3ljbGVCdWcgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdGhlci92aWV3cy9MaWZlY3ljbGVCdWcvaW5kZXgudnVlJwo8L3NjcmlwdD4K";export{c as default};
|
|
2
|
-
//# sourceMappingURL=LifecycleBugDemo-Bldh5GGg.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LifecycleBugDemo-Bldh5GGg.js","sources":["../../src/views/others/LifecycleBugDemo.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHRlbXBsYXRlPgogIDxMaWZlY3ljbGVCdWcgLz4KPC90ZW1wbGF0ZT4KPHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+CmltcG9ydCBMaWZlY3ljbGVCdWcgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9vdGhlci92aWV3cy9MaWZlY3ljbGVCdWcvaW5kZXgudnVlJwo8L3NjcmlwdD4K\""],"names":["LifecycleBugDemo"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const g="data:application/octet-stream;base64,PHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+CmltcG9ydCBIZWxsb1dvcmxkIGZyb20gJy4uL2NvbXBvbmVudHMvb3RoZXIvSGVsbG9Xb3JsZC52dWUnCmltcG9ydCBSZXNwb25zaXZlQXBwIGZyb20gJy4uL2NvbXBvbmVudHMvb3RoZXIvUmVzcG9uc2l2ZUFwcC52dWUnCmltcG9ydCBBYm91dFZpZXcgZnJvbSAnLi4vY29tcG9uZW50cy9vdGhlci92aWV3cy9BYm91dFZpZXcudnVlJwppbXBvcnQgSG9tZVZpZXcgZnJvbSAnLi4vY29tcG9uZW50cy9vdGhlci92aWV3cy9Ib21lVmlldy52dWUnCjwvc2NyaXB0PgoKPHRlbXBsYXRlPgogIDxSZXNwb25zaXZlQXBwPgogICAgPGhlYWRlcj4KICAgICAgPGltZyBhbHQ9IlZ1ZSBsb2dvIiBjbGFzcz0ibG9nbyIgc3JjPSJAL2Fzc2V0cy9sb2dvLnN2ZyIgd2lkdGg9IjEyNSIgaGVpZ2h0PSIxMjUiPgoKICAgICAgPGRpdiBjbGFzcz0id3JhcHBlciI+CiAgICAgICAgPEhlbGxvV29ybGQgbXNnPSJZb3UgZGlkIGl0ISIgLz4KCiAgICAgICAgPG5hdj4KICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj0iW3BhdGgsIG5hbWVdIGluIE9iamVjdC5lbnRyaWVzKCRyb3V0ZXIucm91dGVzKSIgOmtleT0icGF0aCI+CiAgICAgICAgICAgIDxhIDpjbGFzcz0ieyAncm91dGVyLWxpbmstZXhhY3QtYWN0aXZlJzogcGF0aCA9PT0gJHJvdXRlLmZ1bGxQYXRoIH0iIDpocmVmPSInIycgKyBwYXRoIj4KICAgICAgICAgICAgICB7eyBuYW1lIH19CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9uYXY+CiAgICAgIDwvZGl2PgogICAgPC9oZWFkZXI+CgogICAgPEFib3V0VmlldyB2LWlmPSIkcm91dGUuZnVsbFBhdGggPT09ICcvJyIgLz4KICAgIDxIb21lVmlldyB2LWVsc2UgLz4KICA8L1Jlc3BvbnNpdmVBcHA+CjwvdGVtcGxhdGU+Cgo8c3R5bGUgc2NvcGVkPgpoZWFkZXIgewogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgbWF4LWhlaWdodDogMTAwdmg7Cn0KCi5sb2dvIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDAgYXV0byAycmVtOwp9CgpuYXYgewogIHdpZHRoOiAxMDAlOwogIGZvbnQtc2l6ZTogMTJweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLXRvcDogMnJlbTsKfQoKbmF2IGEucm91dGVyLWxpbmstZXhhY3QtYWN0aXZlIHsKICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7Cn0KCm5hdiBhLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCm5hdiBhIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogMCAxcmVtOwogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTsKfQoKbmF2IGE6Zmlyc3Qtb2YtdHlwZSB7CiAgYm9yZGVyOiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7CiAgaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwbGFjZS1pdGVtczogY2VudGVyOwogICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1zZWN0aW9uLWdhcCkgLyAyKTsKICB9CgogIC5sb2dvIHsKICAgIG1hcmdpbjogMCAycmVtIDAgMDsKICB9CgogIGhlYWRlciAud3JhcHBlciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgcGxhY2UtaXRlbXM6IGZsZXgtc3RhcnQ7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQoKICBuYXYgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKCiAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICBtYXJnaW4tdG9wOiAxcmVtOwogIH0KfQo8L3N0eWxlPgo=";export{g as default};
|
|
2
|
-
//# sourceMappingURL=Main-DGU58I8w.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Main-DGU58I8w.js","sources":["../../src/views/Main.vue?url"],"sourcesContent":["export default \"data:application/octet-stream;base64,PHNjcmlwdCBzZXR1cCBsYW5nPSJ0cyI+CmltcG9ydCBIZWxsb1dvcmxkIGZyb20gJy4uL2NvbXBvbmVudHMvb3RoZXIvSGVsbG9Xb3JsZC52dWUnCmltcG9ydCBSZXNwb25zaXZlQXBwIGZyb20gJy4uL2NvbXBvbmVudHMvb3RoZXIvUmVzcG9uc2l2ZUFwcC52dWUnCmltcG9ydCBBYm91dFZpZXcgZnJvbSAnLi4vY29tcG9uZW50cy9vdGhlci92aWV3cy9BYm91dFZpZXcudnVlJwppbXBvcnQgSG9tZVZpZXcgZnJvbSAnLi4vY29tcG9uZW50cy9vdGhlci92aWV3cy9Ib21lVmlldy52dWUnCjwvc2NyaXB0PgoKPHRlbXBsYXRlPgogIDxSZXNwb25zaXZlQXBwPgogICAgPGhlYWRlcj4KICAgICAgPGltZyBhbHQ9IlZ1ZSBsb2dvIiBjbGFzcz0ibG9nbyIgc3JjPSJAL2Fzc2V0cy9sb2dvLnN2ZyIgd2lkdGg9IjEyNSIgaGVpZ2h0PSIxMjUiPgoKICAgICAgPGRpdiBjbGFzcz0id3JhcHBlciI+CiAgICAgICAgPEhlbGxvV29ybGQgbXNnPSJZb3UgZGlkIGl0ISIgLz4KCiAgICAgICAgPG5hdj4KICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj0iW3BhdGgsIG5hbWVdIGluIE9iamVjdC5lbnRyaWVzKCRyb3V0ZXIucm91dGVzKSIgOmtleT0icGF0aCI+CiAgICAgICAgICAgIDxhIDpjbGFzcz0ieyAncm91dGVyLWxpbmstZXhhY3QtYWN0aXZlJzogcGF0aCA9PT0gJHJvdXRlLmZ1bGxQYXRoIH0iIDpocmVmPSInIycgKyBwYXRoIj4KICAgICAgICAgICAgICB7eyBuYW1lIH19CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9uYXY+CiAgICAgIDwvZGl2PgogICAgPC9oZWFkZXI+CgogICAgPEFib3V0VmlldyB2LWlmPSIkcm91dGUuZnVsbFBhdGggPT09ICcvJyIgLz4KICAgIDxIb21lVmlldyB2LWVsc2UgLz4KICA8L1Jlc3BvbnNpdmVBcHA+CjwvdGVtcGxhdGU+Cgo8c3R5bGUgc2NvcGVkPgpoZWFkZXIgewogIGxpbmUtaGVpZ2h0OiAxLjU7CiAgbWF4LWhlaWdodDogMTAwdmg7Cn0KCi5sb2dvIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDAgYXV0byAycmVtOwp9CgpuYXYgewogIHdpZHRoOiAxMDAlOwogIGZvbnQtc2l6ZTogMTJweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgbWFyZ2luLXRvcDogMnJlbTsKfQoKbmF2IGEucm91dGVyLWxpbmstZXhhY3QtYWN0aXZlIHsKICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dCk7Cn0KCm5hdiBhLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7Cn0KCm5hdiBhIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgcGFkZGluZzogMCAxcmVtOwogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyKTsKfQoKbmF2IGE6Zmlyc3Qtb2YtdHlwZSB7CiAgYm9yZGVyOiAwOwp9CgpAbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7CiAgaGVhZGVyIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBwbGFjZS1pdGVtczogY2VudGVyOwogICAgcGFkZGluZy1yaWdodDogY2FsYyh2YXIoLS1zZWN0aW9uLWdhcCkgLyAyKTsKICB9CgogIC5sb2dvIHsKICAgIG1hcmdpbjogMCAycmVtIDAgMDsKICB9CgogIGhlYWRlciAud3JhcHBlciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgcGxhY2UtaXRlbXM6IGZsZXgtc3RhcnQ7CiAgICBmbGV4LXdyYXA6IHdyYXA7CiAgfQoKICBuYXYgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAtMXJlbTsKICAgIGZvbnQtc2l6ZTogMXJlbTsKCiAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICBtYXJnaW4tdG9wOiAxcmVtOwogIH0KfQo8L3N0eWxlPgo=\""],"names":["Main"],"mappings":"AAAA,MAAeA,EAAA"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<tg-map
|
|
4
|
-
:key="mapType"
|
|
5
|
-
v-model:center="data.center"
|
|
6
|
-
v-model:zoom="data.zoom"
|
|
7
|
-
v-model:current-center="data.currentCenter"
|
|
8
|
-
v-model:last-center="data.center"
|
|
9
|
-
class="abs-container"
|
|
10
|
-
:type="mapType"
|
|
11
|
-
:map-style="mapAttrs.dark ? MAP_STYLE_DARK : undefined"
|
|
12
|
-
:min-zoom="0"
|
|
13
|
-
gesture-handling="greedy"
|
|
14
|
-
@load="onMapLoad"
|
|
15
|
-
@click="$.eventLog"
|
|
16
|
-
@dblclick="$.eventLog"
|
|
17
|
-
@rightclick="$.eventLog"
|
|
18
|
-
@contextmenu="$.eventLog"
|
|
19
|
-
@x_dragstart="$.eventLog"
|
|
20
|
-
@x_drag="$.eventLogLess"
|
|
21
|
-
@x_dragend="$.eventLog"
|
|
22
|
-
@mouseover="$.eventLog"
|
|
23
|
-
@x_mousemove="$.eventLogLess"
|
|
24
|
-
@mouseout="$.eventLog"
|
|
25
|
-
@mousedown="$.eventLog"
|
|
26
|
-
@mouseup="$.eventLog"
|
|
27
|
-
>
|
|
28
|
-
<template #overlay>
|
|
29
|
-
<MapTypeSelect />
|
|
30
|
-
</template>
|
|
31
|
-
<tg-scale-control />
|
|
32
|
-
<tg-polyline :path="data.points" :stroke-color="'#f00'" :stroke-weight="10" :stroke-opacity="0.7" />
|
|
33
|
-
<tg-marker :position="data.currentCenter" />
|
|
34
|
-
<tg-marker :position="data.center" :icon="data.icon" />
|
|
35
|
-
<div style="left:0px;bottom:0px;top:unset;">
|
|
36
|
-
<button @click="onFirstPointClick"><</button>
|
|
37
|
-
<button @click="onAddClick"> Add </button>
|
|
38
|
-
<button @click="onRemoveClick"> Remove </button>
|
|
39
|
-
<button @click="onLastPointClick">></button>
|
|
40
|
-
<div style="background:white;">
|
|
41
|
-
<button @click="data.zoom++"> + </button>
|
|
42
|
-
{{ data.zoom }}
|
|
43
|
-
<button @click="data.zoom--"> - </button>
|
|
44
|
-
</div>
|
|
45
|
-
<div style="background-color: black; color: white;">
|
|
46
|
-
<label><input v-model="mapAttrs.draggable" type="checkbox">拖拽</label>
|
|
47
|
-
<label><input v-model="mapAttrs.doubleClickZoom" type="checkbox">双击放大</label>
|
|
48
|
-
<label><input v-model="mapAttrs.dark" type="checkbox">暗色</label>
|
|
49
|
-
</div>
|
|
50
|
-
<button @click="map?.panTo(data.points[0])">panTo</button>
|
|
51
|
-
<button @click="map?.fitBounds(data.bounds)">fitBounds</button>
|
|
52
|
-
<button @click="$.eventLog(map?.getBounds())">getBounds</button>
|
|
53
|
-
</div>
|
|
54
|
-
</tg-map>
|
|
55
|
-
<div style="height: 100px;">
|
|
56
|
-
Other
|
|
57
|
-
</div>
|
|
58
|
-
</div>
|
|
59
|
-
</template>
|
|
60
|
-
<script lang="ts" setup>
|
|
61
|
-
import BAIDU_STYLE_DARK from '@/assets/baidu-style-dark.json'
|
|
62
|
-
import GOOGLE_STYLE_DARK from '@/assets/google-style-dark.json'
|
|
63
|
-
import MapTypeSelect from '@/components/other/MapTypeSelect.vue'
|
|
64
|
-
import { computed, reactive, ref, watch } from 'vue'
|
|
65
|
-
import { LatLng, LatLngBounds, MapZoom, TgMap, TgMarker, TgPolyline, TgScaleControl, type AbstractMap, type MapStyle } from '../../components'
|
|
66
|
-
import { store } from '../../store'
|
|
67
|
-
import { useEventLogMethods } from '../../utils/vue-utils'
|
|
68
|
-
import { cities, icons, line5 } from './data'
|
|
69
|
-
|
|
70
|
-
const $ = useEventLogMethods()
|
|
71
|
-
const MAP_STYLE_DARK: MapStyle = {
|
|
72
|
-
baidu: {
|
|
73
|
-
// styleId无效, 原因未知🤔️
|
|
74
|
-
// styleId: 'd864212461371945759a3a72bed0f05e',
|
|
75
|
-
styleJson: BAIDU_STYLE_DARK,
|
|
76
|
-
},
|
|
77
|
-
google: {
|
|
78
|
-
// mapId只有创建时有效
|
|
79
|
-
// mapId: '370eef1912b57e8d',
|
|
80
|
-
styles: GOOGLE_STYLE_DARK,
|
|
81
|
-
},
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const data = reactive({
|
|
85
|
-
points: [...line5],
|
|
86
|
-
cities: [...cities],
|
|
87
|
-
zoom: 13,
|
|
88
|
-
currentCenter: cities[0],
|
|
89
|
-
bounds: LatLngBounds.create(line5[1], line5[0]),
|
|
90
|
-
center: cities[0],
|
|
91
|
-
icon: icons[0],
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
const map = ref<AbstractMap>()
|
|
95
|
-
|
|
96
|
-
const mapType = computed(() => store.state.mapType)
|
|
97
|
-
|
|
98
|
-
watch(
|
|
99
|
-
() => data.points,
|
|
100
|
-
() => {
|
|
101
|
-
data.center = data.points[data.points.length - 1] || LatLng.ZERO
|
|
102
|
-
},
|
|
103
|
-
{ deep: true },
|
|
104
|
-
)
|
|
105
|
-
|
|
106
|
-
const mapAttrs = reactive({
|
|
107
|
-
draggable: true,
|
|
108
|
-
doubleClickZoom: true,
|
|
109
|
-
dark: false,
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
watch([() => mapAttrs.draggable, () => mapAttrs.doubleClickZoom, map], ([drag, zoom, map]) => {
|
|
113
|
-
map?.setDraggable(drag)
|
|
114
|
-
map?.setDoubleClickZoom(zoom)
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
function onMapLoad(m: AbstractMap) {
|
|
118
|
-
map.value = m
|
|
119
|
-
$.eventLog(`ready: ${m.getBounds()}`)
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
function onAddClick() {
|
|
123
|
-
const city = data.cities.pop()
|
|
124
|
-
if (city) {
|
|
125
|
-
data.points.push(city)
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function onRemoveClick() {
|
|
130
|
-
const point = data.points.pop()
|
|
131
|
-
if (point) {
|
|
132
|
-
data.cities.push(point)
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function onFirstPointClick() {
|
|
137
|
-
setZoomAndCenter(MapZoom.STREET, data.points[0])
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function onLastPointClick() {
|
|
141
|
-
setZoomAndCenter(MapZoom.STATE, data.points[data.points.length - 1])
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const isUseMethod = false
|
|
145
|
-
function setZoomAndCenter(zoom: number, center: LatLng) {
|
|
146
|
-
if (isUseMethod) {
|
|
147
|
-
// 复现Baidu地图上, 先调用setCenter再调用setZoom时出现的中心点偏移问题
|
|
148
|
-
map.value?.setCenter(center)
|
|
149
|
-
map.value?.setZoom(zoom)
|
|
150
|
-
} else {
|
|
151
|
-
data.center = center
|
|
152
|
-
data.zoom = zoom
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
</script>
|