Marker icons are showing along with marker cluster
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- react, typescript
Direzione di ricerca
Inizia con il componente GoogleMaps fornito, in particolare con la configurazione di Marker, useMarkerRef, InfoWindow e MarkerClusterer. Riproduci l'esempio con le versioni indicate della libreria e di Google Maps, quindi verifica che il clustering non lasci visibili i singoli marker e che l'apertura di un'altra finestra informativa chiuda quella precedente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
When loading my custom google map component, marker cluster is getting created but with that actual markers are also getting drown. Providing screenshot below:
Expected result: It should show only marker clusters
Also I didn't see any documentation on how can we close one marker info window programmatically, when I am opening another marker info window.
Steps to Reproduce
Below is my code:
import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
import { Map, Marker, InfoWindow, useMap, useMarkerRef } from '@vis.gl/react-google-maps';
import { MarkerClusterer } from '@googlemaps/markerclusterer';
export default function GoogleMaps({ markerData, defaultZoom = 4, defaultCenter = { lat: 17.3850, lng: 78.4867 }, mapHeight }) {
const map = useMap();
const assetClusterer = useRef(null);
useEffect(() => {
if (!map) return;
if (markerData?.length) {
const bounds = new window.google.maps.LatLngBounds();
markerData.forEach(({ latitude, longitude }) => {
bounds.extend({ lat: latitude, lng: longitude });
});
map.fitBounds(bounds);
map.panToBounds(bounds);
}
if (!assetClusterer.current) {
assetClusterer.current = new MarkerClusterer({ map });
}
}, [map]);
const AssetMarkers = () => {
const [assetMarkers, setAssetMarkers] = useState({});
useEffect(() => {
assetClusterer.current?.clearMarkers();
assetClusterer.current?.addMarkers(Object.values(assetMarkers));
}, [assetMarkers]);
const setMarkerRef = (marker, key) => {
if (marker && assetMarkers[key]) return;
if (!marker && !assetMarkers[key]) return;
setAssetMarkers(prev => {
if (marker) {
return { ...prev, [key]: marker };
} else {
const newMarkers = { ...prev };
delete newMarkers[key];
return newMarkers;
}
});
};
const AssetMarker = ({ point, setMarkerRef }) => {
const [infoWindowShown, setInfoWindowShown] = useState(false);
let [markerRef, marker] = useMarkerRef();
const refCallback = useCallback((marker1) => {
if (!marker1) return;
markerRef(marker1);
setMarkerRef(marker1, point.deviceSN);
}, [setMarkerRef, point.deviceSN]);
const handleAssetMarkerClick = useCallback(() => {
setInfoWindowShown(true);
}, []);
const handleInfoWindowClose = useCallback(() => setInfoWindowShown(false), []);
return (
<>
<Marker
position={{ lat: point.latitude, lng: point.longitude }}
ref={refCallback}
onClick={handleAssetMarkerClick} />
{
infoWindowShown && <InfoWindow anchor={marker} onClose={handleInfoWindowClose}>
<h2>InfoWindow content!</h2>
<p>Some arbitrary html to be rendered into the InfoWindow.</p>
</InfoWindow>
}
</>
)
}
return (
<>
{
markerData.map((objMarker) => (
<AssetMarker key={objMarker.deviceSN} point={objMarker} setMarkerRef={setMarkerRef} />
))
}
</>
)
}
return (
<Map style={{ width: '100%', height: mapHeight }} defaultZoom={defaultZoom} defaultCenter={defaultCenter} streetViewControl={false} gestureHandling="greedy">
<AssetMarkers />
</Map>
)
}
Environment
- Library version: 1.0.2
- Google maps version: weekly
- Browser and Version: Chrome
- OS: Window 10
Logs
No response
- Lingua principale
- TypeScript
- Stelle
- 1.9k
- Fork
- 195
- Merge medio
- 2g 11h
- PR unite (30g)
- 14
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di visgl/react-google-maps
-
google maps issue
Difficoltà 3/5 1-2 giorni Idoneità per principianti 74/100
visgl/react-google-maps#1080 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
bug needs more info
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
visgl/react-google-maps#1039 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
visgl/react-google-maps#918 · 9 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
visgl/react-google-maps#905 ·
I maintainer di solito rispondono entro 2 giorni
-
google maps issue
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
visgl/react-google-maps#889 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di visgl/react-google-maps
Issue simili
-
priority: P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
prime-radiant-inc/evener#3291 ·
I maintainer di solito rispondono entro 1 giorno
-
accessibility bug revealjs
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
quarto-dev/quarto-cli#14961 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
supabase/agent-skills#614 ·
-
Content
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
RunestoneInteractive/rs#1559 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni