 				y: view.frame.height - button.frame.height - 20
 			)
 		}
+		
+		// setting initial location here since viewWillAppear is too early, and viewDidAppear is too late
+		if !presentedInitialLocation {
+			setInitialLocation()
+			presentedInitialLocation = true
+		}
+	}
+	
+	func setInitialLocation() {
+		if let location = location {
+			// present initial location if any
+			self.location = location
+			showCoordinates(location.coordinate, animated: false)
+		} else if showCurrentLocationInitially {
+			showCurrentLocation(animated: false)
+		}
 	}
 	
 	func getCurrentLocation() {

		// search
		navigationItem.titleView = searchBar
		definesPresentationContext = true

		if let location = location {
			// present initial location if any
			self.location = location
			showCoordinates(location.coordinate, animated: false)
		} else if showCurrentLocationInitially {
			showCurrentLocation(animated: false)
		} else if useCurrentLocationAsHint {
			// in else clause because getCurrentLocation() called inside showCurrentLocation()
			getCurrentLocation()
		}
	}
	
	public override func viewDidLayoutSubviews() {
		super.viewDidLayoutSubviews()

		}
		currentLocationListeners.append(listener)
		getCurrentLocation()
	}
	
	func updateAnnotation() {
