2014-02-06 63 views
2

我有一個MKMapView在我所設置:的iOS的MKMapView - 從重新中心到用戶的位置,如果用戶已經平移停止地圖視圖/拖動地圖視圖

[self.mapView setShowsUserLocation:YES]; 

我想告訴用戶位置,如果他/她移動,則更新位置。當didUpdateUserLocation被調用時,似乎地圖重新集中到用戶的位置,即使用戶已將應用程序平移到另一個區域。我想要的是能夠跟蹤用戶的位置,但也讓用戶探索地圖。我didUpdateUserLocation目前看起來是這樣的:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 

    _currentLocation = userLocation; 

    [self.mapView setRegion:MKCoordinateRegionMake(CLLocationCoordinate2DMake(self.currentLocation.coordinate.latitude + 0.0015, self.currentLocation.coordinate.longitude), MKCoordinateSpanMake(0.01, 0.01)) animated:NO]; 

    [...] 
} 

上我應該做的,以達到我想要的是什麼任何想法?

回答

1

只要您將MKMapView的showsUserLocation屬性設置爲YES,就會自動更新用戶位置(參見Apple Docs)。

您應該刪除「setRegion」這一行,因爲這一行將視圖集中在用戶位置上。

+0

謝謝。你知道一種設置MKMapView縮放級別而不設置區域的方法嗎?我希望它與用戶非常接近。而且我只知道'didUpdateUserLocation'後的'_currentLocation'。 – Anders

+0

我通過添加BOOL ivar來解決它,只在'didUpdateUserLocation'中設置'setRegion'一次。 – Anders

+1

如果您想要設置放大區域,而不是以用戶位置爲中心的區域,則可以使用region屬性獲取地圖的實際顯示區域。 您將擁有CLLocationCoordinate2D中心和MKCoordinateSpan跨度。通過保持中心和修改中心,您可以更改zoomLevel。 只需使用setRegion設置新的區域:動畫:並且你有你的縮放:) –

0

我知道這篇文章早已不復存在,但我想分享一下爲我工作的同時搜索這麼多類似問題的答案。他們中的許多人根本沒有工作。我想將我的位置移到一邊,而我通過電子郵件發送了註釋的截圖,否則我將不得不縮小,以便我的針腳下面的區域只佔用可用區域的四分之一。

- (IBAction)beStill:(UIButton *)sender { 
_mapView.showsUserLocation = NO; 
} 

- (IBAction)moveOn:(UIButton *)sender { 
_mapView.showsUserLocation = YES; 
} 

當我還在整理出來,我把兩個按鈕在屏幕上,但隨後重構的界面,因此無論是最後控制用戶接觸也是安全的推斷他是否希望它開或關。然後,我只是將這些語句放入各自的方法中,並刪除了beStill和moveOn按鈕。

這是重要的,因爲當你啓動應用程序,你首先要功能ON,除非你是在大西洋離非洲

這樣的西海岸,我沒有與setRegion

做任何事
相關問題