將MKMapView放入UIViewController並將其設置爲衛星視圖時,地圖會放大並調整爲顯示用戶當前位於的整個國家:例如,美國爲如下所示。MKMapView:縮放到默認「國家級」
當用戶現在縮放地圖,或者我以編程方式縮放地圖時,似乎無法恢復此默認縮放級別。
當然,我可以找出這個默認縮放的座標,以便放大回到那個設置,但實際上我需要爲每個國家做這個事情,這是不值得的。
有人知道如何解決這個問題嗎?
將MKMapView放入UIViewController並將其設置爲衛星視圖時,地圖會放大並調整爲顯示用戶當前位於的整個國家:例如,美國爲如下所示。MKMapView:縮放到默認「國家級」
當用戶現在縮放地圖,或者我以編程方式縮放地圖時,似乎無法恢復此默認縮放級別。
當然,我可以找出這個默認縮放的座標,以便放大回到那個設置,但實際上我需要爲每個國家做這個事情,這是不值得的。
有人知道如何解決這個問題嗎?
要做到這一點,它需要兩種類型的信息。所選國家的中心座標和在地圖上爲region.span設置的正確值。它可能有權訪問Apple Maps數據庫中的數據。我不知道這件事會被公佈給我們。但是如果你在網上搜索,那麼在互聯網上還有其他的地理編碼數據庫可能會給你這兩個值。
myMKMapView.region.center = // Center coordinates of country
myMKMapView.region.span = // A value large enough to enclose the country.
謝謝懸崖!第一次調用mapViewDidFinishLoadingMap:mapView時,我現在將地圖的區域存儲在'NSUserDefaults'中(因爲這是地圖設置爲「國家縮放級別」的時間)。所以我可以在需要時使用存儲的區域。 請注意,您必須將'mapView.region.center'分割爲'mapView.region.span.latitudeDelta'和'mapView.region.span.longitudeDelta',並將'mapView.region.center'分割爲'mapView.region。 center.latitude'和'mapView.region.center.longitude',以便將它們存儲到你的'NSUserDefaults'中。 – Patrick
你可以很簡單地節約viewDidAppear默認的區域,然後用它在需要的時候:
如果你找到一個有你想要什麼,然後你使用設置在地圖上}
class MyController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
var defaultRegion: MKCoordinateRegion?
override func viewDidAppear(animated: Bool) {
defaultRegion = mapView.region
}
func showDefaultMapArea() {
if let region = defaultRegion {
mapView.setRegion(region, animated: true)
}
}
這不起作用 –
應該在mapView委託回調中分配區域' - mapView:regionDidChangeAnimated:'而不是'viewDidAppear'因爲後者無法保證地圖視圖加載狀態 – Raymond
好吧,我只是想表達一下想法,你可以「捕捉」默認區域並在以後使用它。你也可以使用mapView:regionDidChangeAnimated:(如果它最初被調用?),只需要確保只保存一次值,因爲該方法將在每個區域更改上調用,而不僅僅是初始值:} –
你如何第一次獲得全國? – jcesarmobile
這是MKMapView的默認行爲。只需將一個MKMapView放入一個UIViewController並點擊Build&Run即可。 – Patrick