Skip to content

Commit 9e4da28

Browse files
committed
fix(ol-layerswitcher-control): support layer properties needed by ol-ext/control/LayerSwitcher
closes #405
1 parent e16a986 commit 9e4da28

13 files changed

+38
-16
lines changed

Diff for: src/components/layers/OlAnimatedClusterLayer.vue

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import type { Options } from "ol/layer/Vector";
1919
import { useDefaults } from "./LayersCommonProps";
2020
import type VectorSource from "ol/source/Vector";
21+
import type { LayerSwitcherOptions } from "@/types";
2122
2223
// prevent warnings caused by event pass-through via useOpenLayersEvents composable
2324
defineOptions({
@@ -33,7 +34,9 @@ interface ClusterOptions extends Options<VectorSource> {
3334
3435
type Props = {
3536
distance?: number;
36-
} & ClusterOptions;
37+
} & ClusterOptions &
38+
LayerSwitcherOptions;
39+
3740
const props = withDefaults(defineProps<Props>(), useDefaults<Props>());
3841
defineEmits<LayerEvents & VectorSourceEvents>();
3942

Diff for: src/components/layers/OlAnimatedClusterlayer.vue

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
import type { Options } from "ol/layer/Vector";
1919
import { useDefaults } from "./LayersCommonProps";
2020
import type VectorSource from "ol/source/Vector";
21+
import type { LayerSwitcherOptions } from "@/types";
2122
2223
// prevent warnings caused by event pass-through via useOpenLayersEvents composable
2324
defineOptions({
@@ -33,7 +34,9 @@ interface ClusterOptions extends Options<VectorSource> {
3334
3435
type Props = {
3536
distance?: number;
36-
} & ClusterOptions;
37+
} & ClusterOptions &
38+
LayerSwitcherOptions;
39+
3740
const props = withDefaults(defineProps<Props>(), useDefaults<Props>());
3841
defineEmits<LayerEvents & VectorSourceEvents>();
3942

Diff for: src/components/layers/OlHeatmapLayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import {
1414
} from "@/components/layers/LayersCommonProps";
1515
import type { LayerEvents } from "@/composables";
1616
import type { ObjectEvent } from "ol/Object";
17+
import type { LayerSwitcherOptions } from "@/types";
1718
18-
type Props = LayersCommonProps & Options;
19+
type Props = LayersCommonProps & Options & LayerSwitcherOptions;
1920
const props = withDefaults(defineProps<Props>(), useDefaults<Props>());
2021
2122
type Emits = LayerEvents & {

Diff for: src/components/layers/OlImageLayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import { useDefaults } from "@/components/layers/LayersCommonProps";
1212
import type { Options } from "ol/layer/BaseImage";
1313
import type ImageSource from "ol/source/Image";
1414
import type { LayerEvents } from "@/composables";
15+
import type { LayerSwitcherOptions } from "@/types";
1516
16-
type Props = Options<ImageSource>;
17+
type Props = Options<ImageSource> & LayerSwitcherOptions;
1718
const props = withDefaults(
1819
defineProps<Props>(),
1920
useDefaults<Props, ImageSource>(),

Diff for: src/components/layers/OlLayerGroup.vue

+2-4
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ import {
2323
type LayerRenderEvents,
2424
} from "@/composables/useOpenLayersEvents";
2525
import type { ObjectEvent } from "ol/Object";
26+
import type { LayerSwitcherOptions } from "@/types";
2627
2728
// prevent warnings caused by event pass-through via useOpenLayersEvents composable
2829
defineOptions({
2930
inheritAttrs: false,
3031
});
3132
32-
type Props = Options & {
33-
openInLayerSwitcher?: boolean;
34-
title?: string;
35-
};
33+
type Props = Options & LayerSwitcherOptions;
3634
const props = withDefaults(defineProps<Props>(), {
3735
opacity: 1,
3836
visible: true,

Diff for: src/components/layers/OlTileLayer.vue

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import { useDefaults } from "@/components/layers/LayersCommonProps";
1313
import TileSource from "ol/source/Tile";
1414
import type { LayerEvents } from "@/composables";
1515
import type { ObjectEvent } from "ol/Object";
16+
import type { LayerSwitcherOptions } from "@/types";
1617
17-
type Props = Options<TileSource>;
18+
type Props = Options<TileSource> & LayerSwitcherOptions;
1819
type Emits = LayerEvents & {
1920
(e: "change:useInterimTilesOnError", event: ObjectEvent): void;
2021
(e: "change:preload", event: ObjectEvent): void;
@@ -27,7 +28,7 @@ const props = withDefaults(
2728
);
2829
defineEmits<Emits>();
2930
30-
const { layer } = useLayer(TileLayer, toRefs(props), [
31+
const { layer } = useLayer(TileLayer, toRefs({ ...props }), [
3132
"change:useInterimTilesOnError",
3233
"change:preload",
3334
]);

Diff for: src/components/layers/OlVectorImageLayer.vue

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ import VectorImageLayer, { type Options } from "ol/layer/VectorImage";
1111
import useLayer from "@/composables/useLayer";
1212
import { useDefaults } from "@/components/layers/LayersCommonProps";
1313
import type { LayerEvents } from "@/composables";
14+
import type { LayerSwitcherOptions } from "@/types";
1415
15-
const props = withDefaults(defineProps<Options>(), useDefaults<Options>());
16+
type Props = Options & LayerSwitcherOptions;
17+
const props = withDefaults(defineProps<Props>(), useDefaults<Props>());
1618
defineEmits<LayerEvents>();
1719
1820
const { layer } = useLayer(VectorImageLayer, props);

Diff for: src/components/layers/OlVectorLayer.vue

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ import VectorLayer, { type Options } from "ol/layer/Vector";
1010
import useLayer from "@/composables/useLayer";
1111
import { useDefaults } from "@/components/layers/LayersCommonProps";
1212
import type { LayerEvents } from "@/composables";
13+
import type { LayerSwitcherOptions } from "@/types";
1314
14-
const props = withDefaults(defineProps<Options>(), useDefaults<Options>());
15+
type Props = Options & LayerSwitcherOptions;
16+
const props = withDefaults(defineProps<Props>(), useDefaults<Props>());
1517
defineEmits<LayerEvents>();
1618
1719
const { layer } = useLayer(VectorLayer, props);

Diff for: src/components/layers/OlVectorTileLayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@ import useLayer from "@/composables/useLayer";
1111
import { useDefaults } from "@/components/layers/LayersCommonProps";
1212
import type { LayerEvents } from "@/composables";
1313
import type { VectorTile } from "ol/source";
14+
import type { LayerSwitcherOptions } from "@/types";
1415
15-
type Props = Options;
16+
type Props = Options & LayerSwitcherOptions;
1617
const props = withDefaults(
1718
defineProps<Props>(),
1819
useDefaults<Props, VectorTile>(),

Diff for: src/components/layers/OlWebglTileLayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import { useDefaults } from "./LayersCommonProps";
1212
import type { LayerEvents } from "@/composables";
1313
import type { ObjectEvent } from "ol/Object";
1414
import type { Tile } from "ol/source";
15+
import type { LayerSwitcherOptions } from "@/types";
1516
16-
type Props = Options;
17+
type Props = Options & LayerSwitcherOptions;
1718
const props = withDefaults(defineProps<Props>(), useDefaults<Props, Tile>());
1819
1920
type Emits = LayerEvents & {

Diff for: src/components/layers/OlWebglVectorLayer.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import { type LayersCommonProps } from "@/components/layers/LayersCommonProps";
1111
import { WebGLVectorLayer } from "./WebGLVectorLayerClass";
1212
import type { WebGLStyle } from "ol/style/webgl";
1313
import type { LayerEvents } from "@/composables";
14+
import type { LayerSwitcherOptions } from "@/types";
1415
1516
type Props = LayersCommonProps & {
1617
disableHitDetection?: boolean;
1718
styles: WebGLStyle;
18-
};
19+
} & LayerSwitcherOptions;
1920
const props = withDefaults(defineProps<Props>(), {
2021
disableHitDetection: false,
2122
styles: () => ({

Diff for: src/demos/LayerswitcherControlDemo.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ onMounted(() => {
4949
});
5050
5151
onMounted(() => {
52-
console.log(mapRef.value);
52+
console.log(mapRef.value.map.getLayers().getArray());
5353
});
5454
</script>

Diff for: src/types.ts

+8
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,11 @@ export type KeysMatching<T extends object, V> = {
2424
export type ObjectToFactory<T> = {
2525
[Key in keyof T]: T[Key] extends object | undefined ? () => T[Key] : T[Key];
2626
};
27+
28+
export type LayerSwitcherOptions = {
29+
openInLayerSwitcher?: boolean;
30+
title?: string;
31+
name?: string;
32+
allwaysOnTop?: boolean; // typo in original code, see https://github.com/Viglino/ol-ext/issues/1128
33+
baseLayer?: boolean;
34+
};

0 commit comments

Comments
 (0)