Skip to content
This repository has been archived by the owner on Apr 25, 2023. It is now read-only.

feat: support wmts in reearth/core #551

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
feat: support wmts in reearth/core
pyshx committed Mar 2, 2023
commit 0258811afc1447bcf797069f78080e1bd04d745d
22 changes: 21 additions & 1 deletion src/core/engines/Cesium/Feature/Raster/hooks.ts
Original file line number Diff line number Diff line change
@@ -7,13 +7,14 @@ import {
} from "cesium";
import { MVTImageryProvider } from "cesium-mvt-imagery-provider";
import md5 from "js-md5";
import { useEffect, useMemo, useRef } from "react";
import { useEffect, useMemo, useRef, useState } from "react";
import { useCesium } from "resium";

import type { ComputedFeature, ComputedLayer, Feature } from "../../..";
import { extractSimpleLayer, extractSimpleLayerData } from "../utils";

import { Props } from "./types";
import { getWMTSImageryProvider } from "./wmts";

const useImageryProvider = (imageryProvider: ImageryProvider | undefined) => {
const { viewer } = useCesium();
@@ -64,6 +65,25 @@ export const useWMS = ({
useImageryProvider(imageryProvider);
};

export const useWMTS = async ({ isVisible, layer }: Pick<Props, "isVisible" | "layer">) => {
const { type, url, layers } = useData(layer);
const [imageryProvider, setImageryProvider] = useState<ImageryProvider>();

console.log("Reached HERE");

useEffect(() => {
const getImageryProvider = async () => {
const provider = await getWMTSImageryProvider(url, layers);
setImageryProvider(provider);
};
if (isVisible && type === "wmts") {
getImageryProvider();
}
}, [isVisible, type, url, layers]);

useImageryProvider(imageryProvider);
};

type TileCoords = { x: number; y: number; level: number };

const idFromGeometry = (
31 changes: 31 additions & 0 deletions src/core/engines/Cesium/Feature/Raster/index.stories.tsx
Original file line number Diff line number Diff line change
@@ -42,6 +42,37 @@ WMS.args = {
},
};

export const WMTS = Template.bind([]);
WMTS.args = {
engine: "cesium",
engines: {
cesium: engine,
},
ready: true,
layers: [
{
id: "l",
type: "simple",
data: {
type: "wmts",
url: "https://soggy2.zoology.ubc.ca/geoserver/gwc/service/wmts?",
layers: "dem_ssea_27m",
},
raster: {
maximumLevel: 100,
},
},
],
property: {
tiles: [
{
id: "default",
tile_type: "default",
},
],
},
};

export const MVT = Template.bind([]);
MVT.args = {
engine: "cesium",
3 changes: 2 additions & 1 deletion src/core/engines/Cesium/Feature/Raster/index.tsx
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ import { memo } from "react";

import { extractSimpleLayer, extractSimpleLayerData, type FeatureComponentConfig } from "../utils";

import { useMVT, useWMS } from "./hooks";
import { useMVT, useWMS, useWMTS } from "./hooks";
import type { Props } from "./types";

function Raster({
@@ -14,6 +14,7 @@ function Raster({
evalFeature,
onFeatureDelete,
}: Props) {
useWMTS({ isVisible, layer });
useWMS({ isVisible, layer, property });
useMVT({ isVisible, layer, property, evalFeature, onComputedFeatureFetch, onFeatureDelete });

Loading