Skip to content

Commit 8e86a2c

Browse files
authored
Refactor marker creation and visibility logic
1 parent ff16219 commit 8e86a2c

File tree

1 file changed

+36
-35
lines changed

1 file changed

+36
-35
lines changed

samples/advanced-markers-zoom/index.ts

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,51 +6,52 @@
66

77
// [START maps_advanced_markers_zoom]
88
const mapElement = document.querySelector('gmp-map') as google.maps.MapElement;
9-
let innerMap;
109

1110
async function initMap() {
1211
// Request needed libraries.
1312
const { Map } = (await google.maps.importLibrary(
14-
"maps"
13+
'maps'
1514
)) as google.maps.MapsLibrary;
1615
const { AdvancedMarkerElement } = (await google.maps.importLibrary(
17-
"marker"
16+
'marker'
1817
)) as google.maps.MarkerLibrary;
1918

20-
innerMap = mapElement.innerMap;
19+
const markerOptions = [
20+
{
21+
position: { lat: 37.4239163, lng: -122.094 },
22+
title: 'This marker is visible at zoom level 15 and higher.',
23+
minZoom: 14,
24+
},
25+
{
26+
position: { lat: 37.4245, lng: -122.096 },
27+
title: 'This marker is visible at zoom level 16 and higher.',
28+
minZoom: 15,
29+
},
30+
{
31+
position: { lat: 37.4249, lng: -122.095 },
32+
title: 'This marker is visible at zoom level 17 and higher.',
33+
minZoom: 16,
34+
},
35+
{
36+
position: { lat: 37.425, lng: -122.0955 },
37+
title: 'This marker is visible at zoom level 18 and higher.',
38+
minZoom: 17,
39+
},
40+
];
41+
42+
const markers: google.maps.marker.AdvancedMarkerElement[] = [];
43+
for (const { position, title } of markerOptions) {
44+
const marker = new AdvancedMarkerElement({ position, title });
45+
mapElement.appendChild(marker);
46+
markers.push(marker);
47+
}
2148

22-
const marker01 = new AdvancedMarkerElement({
23-
map: innerMap,
24-
position: { lat: 37.4239163, lng: -122.094 },
25-
title: "This marker is visible at zoom level 15 and higher.",
26-
});
27-
28-
const marker02 = new AdvancedMarkerElement({
29-
map: innerMap,
30-
position: { lat: 37.4245, lng: -122.096 },
31-
title: "This marker is visible at zoom level 16 and higher.",
32-
});
33-
34-
const marker03 = new AdvancedMarkerElement({
35-
map: innerMap,
36-
position: { lat: 37.4249, lng: -122.095 },
37-
title: "This marker is visible at zoom level 17 and higher.",
38-
});
39-
40-
const marker04 = new AdvancedMarkerElement({
41-
map: innerMap,
42-
position: { lat: 37.425, lng: -122.0955 },
43-
title: "This marker is visible at zoom level 18 and higher.",
44-
});
4549
// [START maps_advanced_markers_zoom_listener]
46-
innerMap.addListener("zoom_changed", () => {
47-
const zoom = innerMap.getZoom();
48-
if (zoom) {
49-
// Only show each marker above a certain zoom level.
50-
marker01.map = zoom > 14 ? innerMap : null;
51-
marker02.map = zoom > 15 ? innerMap : null;
52-
marker03.map = zoom > 16 ? innerMap : null;
53-
marker04.map = zoom > 17 ? innerMap : null;
50+
mapElement.innerMap.addListener('zoom_changed', () => {
51+
let zoom = mapElement.innerMap.getZoom();
52+
for (let i = 0; i < markers.length; i++) {
53+
const { position, minZoom } = markerOptions[i];
54+
markers[i].position = zoom! > minZoom ? position : null;
5455
}
5556
});
5657
// [END maps_advanced_markers_zoom_listener]

0 commit comments

Comments
 (0)