diff --git a/dev/src/pages/samples/addMapCenterChangedEvent.tsx b/dev/src/pages/samples/addMapCenterChangedEvent.tsx new file mode 100644 index 00000000..e61b4a8b --- /dev/null +++ b/dev/src/pages/samples/addMapCenterChangedEvent.tsx @@ -0,0 +1,58 @@ +import { Map } from "react-kakao-maps-sdk" +import useKakaoLoader from "./useKakaoLoader" +import { useState } from "react" + +export default function AddMapCenterChangedEvent() { + useKakaoLoader() + const [data, setData] = useState<{ + level: number + position: { + lat: number + lng: number + } + }>() + + return ( + <> + { + const level = map.getLevel() + const latlng = map.getCenter() + + setData({ + level: level, + position: { + lat: latlng.getLat(), + lng: latlng.getLng(), + }, + }) + }} + /> +

+ 지도 중심좌표가 변경되면 지도 정보가 표출됩니다 +

+

+ {data && ( + <> +

지도 레벨은 {data.level} 이고

+

+ 중심 좌표는 위도 {data.position.lat}, 경도 {data.position.lng} + 입니다 +

+ + )} +

+ + ) +} diff --git a/docs/docs/sample/map/addMapCenterChangedEvent.mdx b/docs/docs/sample/map/addMapCenterChangedEvent.mdx index f10689ed..3311f112 100644 --- a/docs/docs/sample/map/addMapCenterChangedEvent.mdx +++ b/docs/docs/sample/map/addMapCenterChangedEvent.mdx @@ -9,41 +9,6 @@ sidebar_position: 19 > original docs : https://apis.map.kakao.com/web/sample/addMapCenterChangedEvent/ -```jsx live -function(){ - const Main = () => { - const [state, setState] = useState() - return ( - <> - setState({ - level: map.getLevel(), - center: { - lat: map.getCenter().getLat(), - lng: map.getCenter().getLng(), - } - })} - > - - {!!state && ( - <> -

{'지도 레벨은 ' + state.level + ' 이고'}

-

{'중심 좌표는 위도 ' + state.center.lat + ', 경도 ' + state.center.lng +' 입니다'}

- - )} - - ) - } - return (
) -} -``` +import codesource from "!!raw-loader!~samples/addMapCenterChangedEvent.tsx" + +{codesource} diff --git a/packages/react-kakao-maps-sdk/__test__/addMapCenterChangedEvent.spec.ts b/packages/react-kakao-maps-sdk/__test__/addMapCenterChangedEvent.spec.ts new file mode 100644 index 00000000..f18a064c --- /dev/null +++ b/packages/react-kakao-maps-sdk/__test__/addMapCenterChangedEvent.spec.ts @@ -0,0 +1,36 @@ +import { test, expect } from "@playwright/test" +import { getTestUrl, waitNetworkIdleWithTimeout } from "./util" + +test("ScreenShot 렌더링 결과 비교", async ({ page }, testInfo) => { + const url = getTestUrl( + "addMapCenterChangedEvent", + testInfo.config.updateSnapshots === "all", + ) + await page.goto(url, { waitUntil: "networkidle" }) + await waitNetworkIdleWithTimeout(page) + await expect(page).toHaveScreenshot() + + const mapBoundingBox = await page.locator("#map").boundingBox() + await page.mouse.move(mapBoundingBox!.x, mapBoundingBox!.y) + await page.mouse.wheel(0, 10) + await page.mouse.down() + await page.mouse.move( + mapBoundingBox!.x + mapBoundingBox!.width / 2, + mapBoundingBox!.y + mapBoundingBox!.height / 2, + ) + await waitNetworkIdleWithTimeout(page) + + await expect(page.locator("#result")).toHaveText( + "지도 레벨은 4 이고중심 좌표는 위도 33.44914633366172, 경도 126.57746618837292입니다", + ) + await page.mouse.move( + mapBoundingBox!.x + mapBoundingBox!.width / 3, + mapBoundingBox!.y + mapBoundingBox!.height / 3, + ) + await page.mouse.up() + await page.mouse.wheel(0, -3) + await waitNetworkIdleWithTimeout(page) + await expect(page.locator("#result")).toHaveText( + "지도 레벨은 3 이고중심 좌표는 위도 33.449670516261634, 경도 126.5751942751081입니다", + ) +})