Skip to content

Commit 3feb791

Browse files
feat(perf): new default clustering algo (#152)
1 parent 4cd361b commit 3feb791

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
},
5353
"dependencies": {
5454
"@googlemaps/js-api-loader": "^1.12.11",
55-
"@googlemaps/markerclusterer": "^2.0.6",
55+
"@googlemaps/markerclusterer": "^2.4.0",
5656
"fast-deep-equal": "^3.1.3",
5757
"vite-plugin-css-injected-by-js": "^3.2.1"
5858
},

pnpm-lock.yaml

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/MarkerCluster.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import { defineComponent, PropType, ref, provide, inject, watch, markRaw, onBeforeUnmount } from "vue";
2-
import { MarkerClusterer, MarkerClustererOptions, MarkerClustererEvents } from "@googlemaps/markerclusterer";
2+
import {
3+
MarkerClusterer,
4+
MarkerClustererOptions,
5+
MarkerClustererEvents,
6+
SuperClusterViewportAlgorithm,
7+
} from "@googlemaps/markerclusterer";
38
import { mapSymbol, apiSymbol, markerClusterSymbol } from "../shared/index";
49

510
const markerClusterEvents = Object.values(MarkerClustererEvents);
@@ -24,7 +29,15 @@ export default defineComponent({
2429
map,
2530
() => {
2631
if (map.value) {
27-
markerCluster.value = markRaw(new MarkerClusterer({ map: map.value, ...props.options }));
32+
markerCluster.value = markRaw(
33+
new MarkerClusterer({
34+
map: map.value,
35+
// Better perf than the default `SuperClusterAlgorithm`. See:
36+
// https://github.com/googlemaps/js-markerclusterer/pull/640
37+
algorithm: new SuperClusterViewportAlgorithm(props.options.algorithmOptions ?? {}),
38+
...props.options,
39+
})
40+
);
2841

2942
markerClusterEvents.forEach((event) => {
3043
markerCluster.value?.addListener(event, (e: unknown) => emit(event, e));

0 commit comments

Comments
 (0)