@@ -153,7 +153,8 @@ export default {
153
153
zoom: - 0.5 ,
154
154
crs: CRS .Simple ,
155
155
showMap: true ,
156
- mapKey: this .$f7 .utils .id ()
156
+ mapKey: this .$f7 .utils .id (),
157
+ markers: []
157
158
}
158
159
},
159
160
computed: {
@@ -172,15 +173,6 @@ export default {
172
173
scrollWheelZoom: false ,
173
174
zoomControl: false
174
175
} : {})
175
- },
176
- markers () {
177
- return this .context .component .slots .default .filter ((e ) => {
178
- const zoomVisibilityMin = parseFloat (e .config .zoomVisibilityMin )
179
- const zoomVisibilityMax = parseFloat (e .config .zoomVisibilityMax )
180
- const isVisibleMin = isNaN (zoomVisibilityMin) || zoomVisibilityMin < this .currentZoom
181
- const isVisibleMax = isNaN (zoomVisibilityMax) || zoomVisibilityMax > this .currentZoom
182
- return this .context .editmode != null || (isVisibleMin && isVisibleMax)
183
- })
184
176
}
185
177
},
186
178
mounted () {
@@ -194,6 +186,19 @@ export default {
194
186
methods: {
195
187
zoomUpdate (zoom ) {
196
188
this .currentZoom = zoom
189
+ const allMarkers = this .context .component .slots .default
190
+ const visibleMarkers = allMarkers .filter ((e ) => {
191
+ const zoomVisibilityMin = parseFloat (e .config .zoomVisibilityMin )
192
+ const zoomVisibilityMax = parseFloat (e .config .zoomVisibilityMax )
193
+ const isVisibleMin = isNaN (zoomVisibilityMin) || zoomVisibilityMin < this .currentZoom
194
+ const isVisibleMax = isNaN (zoomVisibilityMax) || zoomVisibilityMax > this .currentZoom
195
+ return this .context .editmode != null || (isVisibleMin && isVisibleMax)
196
+ })
197
+ // only update our markers if the list has changed to avoid unessesary rendering
198
+ if (visibleMarkers .length !== this .markers .length ||
199
+ visibleMarkers .every ((e ) => this .markers .indexOf (e) < 0 )) {
200
+ this .markers = visibleMarkers
201
+ }
197
202
},
198
203
centerUpdate (center ) {
199
204
this .currentCenter = center
0 commit comments