From b2de09b688fa431c93d7a32c26cd9dbae5022a6d Mon Sep 17 00:00:00 2001 From: Andreas Helms Date: Tue, 20 May 2025 15:12:47 +0200 Subject: [PATCH 1/2] docs(example): maps 3d markers example --- examples/map-3d-markers/README.md | 42 +++++++ .../map-3d-markers/config/marker-config.json | 65 +++++++++++ examples/map-3d-markers/data/balloon-red.glb | Bin 0 -> 351152 bytes examples/map-3d-markers/index.html | 31 +++++ examples/map-3d-markers/package.json | 15 +++ examples/map-3d-markers/src/app.tsx | 41 +++++++ examples/map-3d-markers/src/control-panel.tsx | 47 ++++++++ examples/map-3d-markers/src/map-3d/index.ts | 1 + .../map-3d-markers/src/map-3d/map-3d-types.ts | 51 +++++++++ examples/map-3d-markers/src/map-3d/map-3d.tsx | 107 ++++++++++++++++++ .../src/markers/marker-custom-pin.tsx | 35 ++++++ .../map-3d-markers/src/markers/model-3d.tsx | 28 +++++ .../map-3d-markers/src/markers/svg-marker.tsx | 30 +++++ examples/map-3d-markers/src/utility-hooks.ts | 53 +++++++++ examples/map-3d-markers/tsconfig.json | 18 +++ examples/map-3d-markers/types/global.d.ts | 7 ++ .../map-3d-markers/types/google.maps.d.ts | 59 ++++++++++ examples/map-3d-markers/vite.config.js | 17 +++ 18 files changed, 647 insertions(+) create mode 100644 examples/map-3d-markers/README.md create mode 100644 examples/map-3d-markers/config/marker-config.json create mode 100644 examples/map-3d-markers/data/balloon-red.glb create mode 100644 examples/map-3d-markers/index.html create mode 100644 examples/map-3d-markers/package.json create mode 100644 examples/map-3d-markers/src/app.tsx create mode 100644 examples/map-3d-markers/src/control-panel.tsx create mode 100644 examples/map-3d-markers/src/map-3d/index.ts create mode 100644 examples/map-3d-markers/src/map-3d/map-3d-types.ts create mode 100644 examples/map-3d-markers/src/map-3d/map-3d.tsx create mode 100644 examples/map-3d-markers/src/markers/marker-custom-pin.tsx create mode 100644 examples/map-3d-markers/src/markers/model-3d.tsx create mode 100644 examples/map-3d-markers/src/markers/svg-marker.tsx create mode 100644 examples/map-3d-markers/src/utility-hooks.ts create mode 100644 examples/map-3d-markers/tsconfig.json create mode 100644 examples/map-3d-markers/types/global.d.ts create mode 100644 examples/map-3d-markers/types/google.maps.d.ts create mode 100644 examples/map-3d-markers/vite.config.js diff --git a/examples/map-3d-markers/README.md b/examples/map-3d-markers/README.md new file mode 100644 index 00000000..2e448061 --- /dev/null +++ b/examples/map-3d-markers/README.md @@ -0,0 +1,42 @@ +# 3D Maps with Markers Example + +This example implements a new `Map3D` component that renders +a 3D Globe based on the new experimental [`Map3DElement`][gmp-map3d-overview] +web-component. + +The map contains basic [`Marker3DElements`][gmp-map3d-marker-add] as well as markers with a custom pin and a 3D model. + +[gmp-map3d-overview]: https://developers.google.com/maps/documentation/javascript/3d-maps-overview +[gmp-map3d-marker-add]: https://developers.google.com/maps/documentation/javascript/3d/marker-add + +## Google Maps API key + +This example does not come with an API key. Running the examples locally requires a valid API key for the Google Maps Platform. +See [the official documentation][get-api-key] on how to create and configure your own key. + +The API key has to be provided via an environment variable `GOOGLE_MAPS_API_KEY`. This can be done by creating a +file named `.env` in the example directory with the following content: + +```shell title=".env" +GOOGLE_MAPS_API_KEY="" +``` + +If you are on the CodeSandbox playground you can also choose to [provide the API key like this](https://codesandbox.io/docs/learn/environment/secrets) + +## Development + +Go into the example-directory and run + +```shell +npm install +``` + +To start the example with the local library run + +```shell +npm run start-local +``` + +The regular `npm start` task is only used for the standalone versions of the example (CodeSandbox for example) + +[get-api-key]: https://developers.google.com/maps/documentation/javascript/get-api-key diff --git a/examples/map-3d-markers/config/marker-config.json b/examples/map-3d-markers/config/marker-config.json new file mode 100644 index 00000000..d38dd07c --- /dev/null +++ b/examples/map-3d-markers/config/marker-config.json @@ -0,0 +1,65 @@ +{ + "basic": { + "markerOptions": { + "position": {"lat": 40.707275, "lng": -73.998332, "altitude": 80}, + "altitudeMode": "RELATIVE_TO_GROUND" + } + }, + "basicExtruded": { + "markerOptions": { + "position": {"lat": 40.707275, "lng": -73.998332, "altitude": 200}, + "extruded": true, + "altitudeMode": "RELATIVE_TO_GROUND" + } + }, + "basicColored": { + "markerOptions": { + "position": { + "lat": 40.706461, + "lng": -73.997409, + "altitude": 50 + }, + "altitudeMode": "RELATIVE_TO_GROUND" + }, + "pinOptions": { + "borderColor": "blue", + "background": "blue", + "glyphColor": "white" + } + }, + "customLogo": { + "markerOptions": { + "position": { + "lat": 40.705666, + "lng": -73.996382, + "altitude": 50 + }, + "altitudeMode": "RELATIVE_TO_GROUND" + }, + "pinOptions": { + "borderColor": "white", + "background": "white", + "glyph": "https://www.gstatic.com/images/branding/productlogos/maps/v7/192px.svg" + } + }, + "svg": { + "markerOptions": { + "position": { + "lat": 40.704876, + "lng": -73.995379, + "altitude": 50 + }, + "altitudeMode": "RELATIVE_TO_GROUND" + } + }, + "model3d": { + "markerOptions": { + "position": { + "lat": 40.704118, + "lng": -73.994371, + "altitude": 100 + }, + "altitudeMode": "RELATIVE_TO_GROUND" + } + } +} diff --git a/examples/map-3d-markers/data/balloon-red.glb b/examples/map-3d-markers/data/balloon-red.glb new file mode 100644 index 0000000000000000000000000000000000000000..9d39850be54f1f38112b7df64ef1fcd6ea5c0061 GIT binary patch literal 351152 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

7_e)?3lBQv6FV~HQz3dRik;JQ<3(}QesjEwW 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
hUs#g(mqri^L~kN&Mw* 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 R{RZ>^lp0AdY!5Zm{vY26TNwZV literal 0 HcmV?d00001 diff --git a/examples/map-3d-markers/index.html b/examples/map-3d-markers/index.html new file mode 100644 index 00000000..a9c7fcfd --- /dev/null +++ b/examples/map-3d-markers/index.html @@ -0,0 +1,31 @@ + + + + + + Example: Photorealistic 3D Map with Markers + + + + +

+ + + diff --git a/examples/map-3d-markers/package.json b/examples/map-3d-markers/package.json new file mode 100644 index 00000000..60c228cd --- /dev/null +++ b/examples/map-3d-markers/package.json @@ -0,0 +1,15 @@ +{ + "type": "module", + "dependencies": { + "@vis.gl/react-google-maps": "latest", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "typescript": "^5.4.5", + "vite": "^6.0.11" + }, + "scripts": { + "start": "vite", + "start-local": "vite --config ../vite.config.local.js", + "build": "vite build" + } +} diff --git a/examples/map-3d-markers/src/app.tsx b/examples/map-3d-markers/src/app.tsx new file mode 100644 index 00000000..32d28e29 --- /dev/null +++ b/examples/map-3d-markers/src/app.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import {createRoot} from 'react-dom/client'; + +import {APIProvider} from '@vis.gl/react-google-maps'; + +import {Map3D} from './map-3d'; +import ControlPanel from './control-panel'; + +const API_KEY = + globalThis.GOOGLE_MAPS_API_KEY ?? (process.env.GOOGLE_MAPS_API_KEY as string); + +const INITIAL_VIEW_PROPS = { + center: {lat: 40.7006119, lng: -74.0032485, altitude: 600}, + range: 600, + heading: 45, + tilt: 60, + roll: 0 +}; + +const App = () => { + return ( + + + + + ); +}; +export default App; + +export function renderToDom(container: HTMLElement) { + const root = createRoot(container); + + root.render( + + + + ); +} diff --git a/examples/map-3d-markers/src/control-panel.tsx b/examples/map-3d-markers/src/control-panel.tsx new file mode 100644 index 00000000..59420381 --- /dev/null +++ b/examples/map-3d-markers/src/control-panel.tsx @@ -0,0 +1,47 @@ +import * as React from 'react'; + +const GMP_3D_MAPS_OVERVIEW_URL = + 'https://developers.google.com/maps/documentation/javascript/3d-maps-overview'; + +const GMP_3D_MAPS_MARKER_ADD_URL = + 'https://developers.google.com/maps/documentation/javascript/3d/marker-add'; + +function ControlPanel() { + return ( +
+

3D Maps with Markers

+

+ This example implements a new Map3D component that renders + a 3D Globe based on the new experimental{' '} + + Map3DElement + {' '} + web-component. +

+ +

+ The map contains basic{' '} + + Marker3DElements + {' '} + as well as markers with a custom pin and a 3D model. +

+ + +
+ ); +} + +export default React.memo(ControlPanel); diff --git a/examples/map-3d-markers/src/map-3d/index.ts b/examples/map-3d-markers/src/map-3d/index.ts new file mode 100644 index 00000000..a21d1287 --- /dev/null +++ b/examples/map-3d-markers/src/map-3d/index.ts @@ -0,0 +1 @@ +export * from './map-3d'; diff --git a/examples/map-3d-markers/src/map-3d/map-3d-types.ts b/examples/map-3d-markers/src/map-3d/map-3d-types.ts new file mode 100644 index 00000000..570f783f --- /dev/null +++ b/examples/map-3d-markers/src/map-3d/map-3d-types.ts @@ -0,0 +1,51 @@ +/* eslint-disable @typescript-eslint/no-namespace, @typescript-eslint/no-explicit-any */ + +import {DOMAttributes, RefAttributes} from 'react'; + +// add an overload signature for the useMapsLibrary hook, so typescript +// knows what the 'maps3d' library is. +declare module '@vis.gl/react-google-maps' { + export function useMapsLibrary( + name: 'maps3d' + ): typeof google.maps.maps3d | null; +} + +// temporary fix until @types/google.maps is updated with the latest changes +declare global { + namespace google.maps.maps3d { + interface Map3DElement extends HTMLElement { + mode?: 'HYBRID' | 'SATELLITE'; + } + } +} + +// add the custom-element to the JSX.IntrinsicElements +// interface, so it can be used in jsx +declare module 'react' { + namespace JSX { + interface IntrinsicElements { + ['gmp-map-3d']: CustomElement< + google.maps.maps3d.Map3DElement, + google.maps.maps3d.Map3DElement + >; + } + + interface IntrinsicElements { + ['gmp-marker-3d']: CustomElement< + google.maps.maps3d.Marker3DElement, + google.maps.maps3d.Marker3DElement + >; + } + } +} + +// a helper type for CustomElement definitions +type CustomElement = Partial< + TAttr & + DOMAttributes & + RefAttributes & { + // for whatever reason, anything else doesn't work as children + // of a custom element, so we allow `any` here + children: any; + } +>; diff --git a/examples/map-3d-markers/src/map-3d/map-3d.tsx b/examples/map-3d-markers/src/map-3d/map-3d.tsx new file mode 100644 index 00000000..e8a13ae8 --- /dev/null +++ b/examples/map-3d-markers/src/map-3d/map-3d.tsx @@ -0,0 +1,107 @@ +import {useMapsLibrary} from '@vis.gl/react-google-maps'; +import React, { + ForwardedRef, + forwardRef, + useEffect, + useImperativeHandle, + useState +} from 'react'; +import {useCallbackRef, useDeepCompareEffect} from '../utility-hooks'; + +import './map-3d-types'; + +import MarkerCustomPin from '../markers/marker-custom-pin'; +import SvgMarker from '../markers/svg-marker'; +import Model3D from '../markers/model-3d'; + +import markerConfig from '../../config/marker-config.json'; + +type MarkerConfig = Record< + string, + { + markerOptions: google.maps.maps3d.Marker3DElementOptions; + pinOptions?: google.maps.marker.PinElementOptions; + } +>; + +const {basic, basicExtruded, basicColored, customLogo, model3d, svg} = + markerConfig as MarkerConfig; + +export type Map3DProps = google.maps.maps3d.Map3DElementOptions & { + onCameraChange?: (cameraProps: Map3DCameraProps) => void; +}; + +export type Map3DCameraProps = { + center: google.maps.LatLngAltitudeLiteral; + range: number; + heading: number; + tilt: number; + roll: number; +}; + +export const Map3D = forwardRef( + ( + props: Map3DProps, + forwardedRef: ForwardedRef + ) => { + useMapsLibrary('maps3d'); + + const [map3DElement, map3dRef] = + useCallbackRef(); + + const [customElementsReady, setCustomElementsReady] = useState(false); + useEffect(() => { + customElements.whenDefined('gmp-map-3d').then(() => { + setCustomElementsReady(true); + }); + }, []); + + const {center, heading, tilt, range, roll, ...map3dOptions} = props; + + useDeepCompareEffect(() => { + if (!map3DElement) return; + + // copy all values from map3dOptions to the map3D element itself + Object.assign(map3DElement, map3dOptions); + }, [map3DElement, map3dOptions]); + + useImperativeHandle< + google.maps.maps3d.Map3DElement | null, + google.maps.maps3d.Map3DElement | null + >(forwardedRef, () => map3DElement, [map3DElement]); + + if (!customElementsReady) return null; + + return ( + + + + + + + + + ); + } +); diff --git a/examples/map-3d-markers/src/markers/marker-custom-pin.tsx b/examples/map-3d-markers/src/markers/marker-custom-pin.tsx new file mode 100644 index 00000000..d3096a5b --- /dev/null +++ b/examples/map-3d-markers/src/markers/marker-custom-pin.tsx @@ -0,0 +1,35 @@ +import React, {FunctionComponent, useRef, useEffect} from 'react'; + +interface Props { + markerOptions: google.maps.maps3d.Marker3DElementOptions; + pinOptions?: google.maps.marker.PinElementOptions; +} + +const MarkerCustomPin: FunctionComponent = ({ + markerOptions, + pinOptions +}) => { + const ref = useRef(null); + + useEffect(() => { + const parent = ref.current?.parentElement; + if (parent) { + const marker = new google.maps.maps3d.Marker3DElement(markerOptions); + + if (pinOptions) { + const pin = new google.maps.marker.PinElement({ + ...pinOptions, + glyph: pinOptions.glyph + ? new URL(pinOptions.glyph as string) + : undefined + }); + marker.append(pin); + } + parent.appendChild(marker); + } + }, [markerOptions, pinOptions]); + + return
; +}; + +export default MarkerCustomPin; diff --git a/examples/map-3d-markers/src/markers/model-3d.tsx b/examples/map-3d-markers/src/markers/model-3d.tsx new file mode 100644 index 00000000..26f55b1d --- /dev/null +++ b/examples/map-3d-markers/src/markers/model-3d.tsx @@ -0,0 +1,28 @@ +import React, {FunctionComponent, useEffect, useRef} from 'react'; + +interface Props { + markerOptions: google.maps.maps3d.Marker3DElementOptions; + url: URL; +} + +const Model3D: FunctionComponent = ({markerOptions, url}) => { + const ref = useRef(null); + + useEffect(() => { + const parent = ref.current?.parentElement; + if (parent) { + const model3dElement = new google.maps.maps3d.Model3DElement({ + src: url, + orientation: {heading: 0, tilt: 0, roll: 0}, + scale: 10, + ...markerOptions + }); + + parent.appendChild(model3dElement); + } + }); + + return
; +}; + +export default Model3D; diff --git a/examples/map-3d-markers/src/markers/svg-marker.tsx b/examples/map-3d-markers/src/markers/svg-marker.tsx new file mode 100644 index 00000000..e28be9ce --- /dev/null +++ b/examples/map-3d-markers/src/markers/svg-marker.tsx @@ -0,0 +1,30 @@ +import React, {FunctionComponent, useEffect, useRef} from 'react'; + +interface Props { + markerOptions: google.maps.maps3d.Marker3DElementOptions; + svgUrl: string; +} + +const SvgMarker: FunctionComponent = ({markerOptions, svgUrl}) => { + const ref = useRef(null); + + useEffect(() => { + const parent = ref.current?.parentElement; + if (parent) { + const marker = new google.maps.maps3d.Marker3DElement(markerOptions); + + const img = document.createElement('img'); + img.src = svgUrl; + + const template = document.createElement('template'); + template.content.append(img); + + marker.append(template); + parent.appendChild(marker); + } + }); + + return
; +}; + +export default SvgMarker; diff --git a/examples/map-3d-markers/src/utility-hooks.ts b/examples/map-3d-markers/src/utility-hooks.ts new file mode 100644 index 00000000..048e1c66 --- /dev/null +++ b/examples/map-3d-markers/src/utility-hooks.ts @@ -0,0 +1,53 @@ +import { + DependencyList, + EffectCallback, + Ref, + useCallback, + useEffect, + useRef, + useState +} from 'react'; +import isDeepEqual from 'fast-deep-equal'; + +export function useCallbackRef() { + const [el, setEl] = useState(null); + const ref = useCallback((value: T) => setEl(value), [setEl]); + + return [el, ref as Ref] as const; +} + +export function useDeepCompareEffect( + effect: EffectCallback, + deps: DependencyList +) { + const ref = useRef(undefined); + + if (!ref.current || !isDeepEqual(deps, ref.current)) { + ref.current = deps; + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + useEffect(effect, ref.current); +} + +export function useDebouncedEffect( + effect: EffectCallback, + timeout: number, + deps: DependencyList +) { + const timerRef = useRef(0); + + useEffect( + () => { + if (timerRef.current) { + clearTimeout(timerRef.current); + timerRef.current = 0; + } + + timerRef.current = setTimeout(() => effect(), timeout); + return () => clearTimeout(timerRef.current); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [timeout, ...deps] + ); +} diff --git a/examples/map-3d-markers/tsconfig.json b/examples/map-3d-markers/tsconfig.json new file mode 100644 index 00000000..ac61102d --- /dev/null +++ b/examples/map-3d-markers/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "typeRoots": ["./types", "../../types", "./node_modules/@types"], + "strict": true, + "sourceMap": true, + "noEmit": true, + "noImplicitAny": true, + "module": "ESNext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "target": "ES2020", + "lib": ["es2020", "dom"], + "jsx": "react", + "skipLibCheck": true + }, + "exclude": ["./dist", "./node_modules"], + "include": ["src/**/*.ts", "src/**/*.tsx", "types/**/*.ts"] +} diff --git a/examples/map-3d-markers/types/global.d.ts b/examples/map-3d-markers/types/global.d.ts new file mode 100644 index 00000000..b65b2bbc --- /dev/null +++ b/examples/map-3d-markers/types/global.d.ts @@ -0,0 +1,7 @@ +export declare global { + // const or let does not work in this case, it has to be var + // eslint-disable-next-line no-var + var GOOGLE_MAPS_API_KEY: string | undefined; + // eslint-disable-next-line no-var, @typescript-eslint/no-explicit-any + var process: any; +} diff --git a/examples/map-3d-markers/types/google.maps.d.ts b/examples/map-3d-markers/types/google.maps.d.ts new file mode 100644 index 00000000..e1272e6f --- /dev/null +++ b/examples/map-3d-markers/types/google.maps.d.ts @@ -0,0 +1,59 @@ +declare namespace google.maps.maps3d { + // + // --- + // + + export class Model3DElement + extends HTMLElement + implements Model3DElementOptions + { + constructor(options?: Model3DElementOptions); + + position: google.maps.LatLngAltitude | google.maps.LatLngAltitudeLiteral; + src: string | URL; + + altitudeMode?: google.maps.maps3d.AltitudeMode; + orientation?: google.maps.Orientation3D | google.maps.Orientation3DLiteral; + scale?: number | google.maps.Vector3D | google.maps.Vector3DLiteral; + } + + export interface Model3DElementOptions { + position: google.maps.LatLngAltitude | google.maps.LatLngAltitudeLiteral; + src: string | URL; + + altitudeMode?: google.maps.maps3d.AltitudeMode; + orientation?: google.maps.Orientation3D | google.maps.Orientation3DLiteral; + scale?: number | google.maps.Vector3D | google.maps.Vector3DLiteral; + } + + // + // --- + // + + export class Marker3DElement + extends HTMLElement + implements Marker3DElementOptions + { + constructor(options?: Marker3DElementOptions); + + position: google.maps.LatLngAltitude | google.maps.LatLngAltitudeLiteral; + altitudeMode?: google.maps.maps3d.AltitudeMode; + collisionBehavior?: google.maps.CollisionBehavior; + extruded?: boolean; + drawsWhenOccluded?: boolean; + label?: string; + sizePreserved?: boolean; + zIndex?: number; + } + + export interface Marker3DElementOptions { + position: google.maps.LatLngAltitude | google.maps.LatLngAltitudeLiteral; + altitudeMode?: google.maps.maps3d.AltitudeMode; + collisionBehavior?: google.maps.CollisionBehavior; + extruded?: boolean; + drawsWhenOccluded?: boolean; + label?: string; + sizePreserved?: boolean; + zIndex?: number; + } +} diff --git a/examples/map-3d-markers/vite.config.js b/examples/map-3d-markers/vite.config.js new file mode 100644 index 00000000..522c6cb9 --- /dev/null +++ b/examples/map-3d-markers/vite.config.js @@ -0,0 +1,17 @@ +import {defineConfig, loadEnv} from 'vite'; + +export default defineConfig(({mode}) => { + const {GOOGLE_MAPS_API_KEY = ''} = loadEnv(mode, process.cwd(), ''); + + return { + define: { + 'process.env.GOOGLE_MAPS_API_KEY': JSON.stringify(GOOGLE_MAPS_API_KEY) + }, + resolve: { + alias: { + '@vis.gl/react-google-maps/examples.js': + 'https://visgl.github.io/react-google-maps/scripts/examples.js' + } + } + }; +}); From b46c2672d82b3b74f958311dd85aab7f67521ded Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 4 Jun 2025 10:48:08 +0200 Subject: [PATCH 2/2] chore: adjust location --- .../map-3d-markers/config/marker-config.json | 36 +++++++++++-------- examples/map-3d-markers/src/app.tsx | 8 ++--- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/examples/map-3d-markers/config/marker-config.json b/examples/map-3d-markers/config/marker-config.json index d38dd07c..cd7098b0 100644 --- a/examples/map-3d-markers/config/marker-config.json +++ b/examples/map-3d-markers/config/marker-config.json @@ -1,13 +1,21 @@ { "basic": { "markerOptions": { - "position": {"lat": 40.707275, "lng": -73.998332, "altitude": 80}, + "position": { + "lat": 40.704876, + "lng": -73.995379, + "altitude": 50 + }, "altitudeMode": "RELATIVE_TO_GROUND" } }, "basicExtruded": { "markerOptions": { - "position": {"lat": 40.707275, "lng": -73.998332, "altitude": 200}, + "position": { + "lat": 40.704118, + "lng": -73.994371, + "altitude": 150 + }, "extruded": true, "altitudeMode": "RELATIVE_TO_GROUND" } @@ -15,23 +23,23 @@ "basicColored": { "markerOptions": { "position": { - "lat": 40.706461, - "lng": -73.997409, + "lat": 40.705666, + "lng": -73.996382, "altitude": 50 }, "altitudeMode": "RELATIVE_TO_GROUND" }, "pinOptions": { - "borderColor": "blue", - "background": "blue", + "borderColor": "#0D652D", + "background": "#34A853", "glyphColor": "white" } }, "customLogo": { "markerOptions": { "position": { - "lat": 40.705666, - "lng": -73.996382, + "lat": 40.706461, + "lng": -73.997409, "altitude": 50 }, "altitudeMode": "RELATIVE_TO_GROUND" @@ -45,9 +53,9 @@ "svg": { "markerOptions": { "position": { - "lat": 40.704876, - "lng": -73.995379, - "altitude": 50 + "lat": 40.707275, + "lng": -73.998332, + "altitude": 80 }, "altitudeMode": "RELATIVE_TO_GROUND" } @@ -55,9 +63,9 @@ "model3d": { "markerOptions": { "position": { - "lat": 40.704118, - "lng": -73.994371, - "altitude": 100 + "lat": 40.70880455562221, + "lng": -74.00022947934575, + "altitude": 150 }, "altitudeMode": "RELATIVE_TO_GROUND" } diff --git a/examples/map-3d-markers/src/app.tsx b/examples/map-3d-markers/src/app.tsx index 32d28e29..99836dc4 100644 --- a/examples/map-3d-markers/src/app.tsx +++ b/examples/map-3d-markers/src/app.tsx @@ -10,10 +10,10 @@ const API_KEY = globalThis.GOOGLE_MAPS_API_KEY ?? (process.env.GOOGLE_MAPS_API_KEY as string); const INITIAL_VIEW_PROPS = { - center: {lat: 40.7006119, lng: -74.0032485, altitude: 600}, - range: 600, - heading: 45, - tilt: 60, + center: {lat: 40.7093, lng: -73.9968, altitude: 32}, + range: 1733, + heading: 5, + tilt: 70, roll: 0 };