aboutsummaryrefslogtreecommitdiff
path: root/iosApp/iosApp/Map/MapView.swift
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-02-04 02:31:03 -0600
committerIván Ávalos <avalos@disroot.org>2022-02-04 02:31:03 -0600
commitc5e289dc4111fd23fbab4b4695d405b8fccea349 (patch)
tree1faa6228623d39eb8fdd1d4da0852741ec111519 /iosApp/iosApp/Map/MapView.swift
parentdac657032851dbd6b13be72253e4f8777c67b439 (diff)
downloadetbsa-trackermap-mobile-c5e289dc4111fd23fbab4b4695d405b8fccea349.tar.gz
etbsa-trackermap-mobile-c5e289dc4111fd23fbab4b4695d405b8fccea349.tar.bz2
etbsa-trackermap-mobile-c5e289dc4111fd23fbab4b4695d405b8fccea349.zip
Only refresh map markers when some of them changes
Diffstat (limited to 'iosApp/iosApp/Map/MapView.swift')
-rw-r--r--iosApp/iosApp/Map/MapView.swift12
1 files changed, 9 insertions, 3 deletions
diff --git a/iosApp/iosApp/Map/MapView.swift b/iosApp/iosApp/Map/MapView.swift
index 989f17a..2c86c3b 100644
--- a/iosApp/iosApp/Map/MapView.swift
+++ b/iosApp/iosApp/Map/MapView.swift
@@ -28,8 +28,11 @@ struct MapView: UIViewControllerRepresentable {
@Binding var selected: Marker?
var markerCallback: MarkerCallback?
+ var shouldCenter = true
+
class Coordinator {
var shouldCenter: Bool = true
+ var oldMarkers: [Marker] = []
}
func makeCoordinator() -> Coordinator {
@@ -48,10 +51,13 @@ struct MapView: UIViewControllerRepresentable {
uiViewController.setMapLayer(layer)
// MARK: - Set markers
- uiViewController.display(markers: markers,
- isReport: false,
- center: context.coordinator.shouldCenter)
+ if context.coordinator.oldMarkers != markers {
+ uiViewController.display(markers: markers,
+ isReport: false,
+ center: context.coordinator.shouldCenter)
+ }
context.coordinator.shouldCenter = false
+ context.coordinator.oldMarkers = markers
// MARK: - Center selected marker
if let selected = selected {