@@ -2,7 +2,7 @@ import { forwardRef, useEffect, useState } from 'react';
22
33import { MarkerProps } from './type' ;
44import { useApplyMarkerEvent } from '../../hooks/useApplyMarkerEvent' ;
5- import { importLibrary } from '../../hooks/useImportLibrary' ;
5+ import { useImportLibrary } from '../../hooks/useImportLibrary' ;
66import { passRef } from '../../utils/passRef' ;
77import { useSetAnchor } from '../InfoWindow/Context' ;
88import { useMapContext } from '../Provider/MapProvider' ;
@@ -34,41 +34,39 @@ export const Marker = forwardRef<google.maps.Marker, MarkerProps>(
3434 onTitleChanged,
3535 onVisibleChanged,
3636 onZindexChanged,
37- ...markerOptions
37+ ...options
3838 } ,
3939 ref ,
4040 ) {
4141 const map = useMapContext ( ) ;
42+ const markerLib = useImportLibrary ( 'marker' ) ;
4243 const setAnchor = useSetAnchor ( ) ;
4344
4445 const [ marker , setMarker ] = useState < google . maps . Marker | null > ( null ) ;
4546
4647 useEffect ( ( ) => {
47- let marker ;
48+ if ( ! markerLib ?. Marker ) {
49+ return ;
50+ }
4851
49- const loadMarker = async ( ) => {
50- const markerLib = await importLibrary ( 'marker' ) ;
52+ const marker = new markerLib . Marker ( {
53+ ...options ,
54+ draggable : ! ! draggable ,
55+ map,
56+ position : { lat, lng } ,
57+ } ) ;
5158
52- marker = new markerLib . Marker ( {
53- ...markerOptions ,
54- draggable : ! ! draggable ,
55- map,
56- position : { lat, lng } ,
57- } ) ;
59+ setMarker ( marker ) ;
60+ passRef ( ref , marker ) ;
5861
59- setMarker ( marker ) ;
60- passRef ( ref , marker ) ;
61-
62- // for InfoWindow
63- setAnchor ( marker ) ;
64- } ;
65- loadMarker ( ) ;
62+ // for InfoWindow
63+ setAnchor ( marker ) ;
6664
6765 return ( ) => {
6866 marker ?. setMap ( null ) ;
6967 setAnchor ( null ) ;
7068 } ;
71- } , [ ] ) ;
69+ } , [ markerLib ?. Marker ] ) ;
7270
7371 useEffect ( ( ) => {
7472 marker ?. setPosition ( { lat, lng } ) ;
@@ -79,8 +77,8 @@ export const Marker = forwardRef<google.maps.Marker, MarkerProps>(
7977 } , [ draggable ] ) ;
8078
8179 useEffect ( ( ) => {
82- marker ?. setOptions ( markerOptions ) ;
83- } , [ markerOptions ] ) ;
80+ marker ?. setOptions ( options ) ;
81+ } , Object . values ( options ) ) ;
8482
8583 useApplyMarkerEvent ( marker , {
8684 onAnimationChanged,
0 commit comments