我在覆蓋整個設備屏幕空間的視圖中繪製地圖。是否可以定位地圖視圖,以便用戶的當前位置不在視圖的中心?
在這個視圖的頂部是佔據屏幕下半部分的另一個視圖。頂視圖是半透明的,因此用戶可以看到它下面的覆蓋地圖。
在地圖內我顯示用戶的當前位置。
地圖視圖被自動定位在地圖,使得用戶的位置的視圖內居中 - 因此其是裝置屏幕的中心,然而中心還包括的頂視圖。
但是我希望用戶的位置在頂視圖未覆蓋的地圖視圖部分中居中。
我在覆蓋整個設備屏幕空間的視圖中繪製地圖。是否可以定位地圖視圖,以便用戶的當前位置不在視圖的中心?
在這個視圖的頂部是佔據屏幕下半部分的另一個視圖。頂視圖是半透明的,因此用戶可以看到它下面的覆蓋地圖。
在地圖內我顯示用戶的當前位置。
地圖視圖被自動定位在地圖,使得用戶的位置的視圖內居中 - 因此其是裝置屏幕的中心,然而中心還包括的頂視圖。
但是我希望用戶的位置在頂視圖未覆蓋的地圖視圖部分中居中。
最簡單的解決方案是應用偏移到座標來移動地圖一點點,取MKMapView
的區域的跨度的優點。
CLLocationCoordinate2D newCenter = userCoordinate;
newCenter.latitude -= _mapView.region.span.latitudeDelta * 0.50;
[self.mapView setCenterCoordinate:newCenter animated:YES];
的0.50
價值是存在的只是給你一個例子。通過改變它你可以調整偏移量。
您還可以利用當前的中心位置,將其轉換爲CGPoint
,然後以像素爲單位添加所需的偏移量爲CGPoint
並將其轉換回CLLocationCoordinate2D
:
UIOffset offset = UIOffsetMake(30.0f, 40.0f);
offset.horizontal
offset.vertical
CGPoint point = [_mapView convertCoordinate:userCoordinate
toPointToView:_mapView];
point.x += offset.horizontal;
point.y += offset.vertical;
CLLocationCoordinate2D newCenter = [_mapView convertPoint:point
toCoordinateFromView:_mapView];
[_mapView setCenterCoordinate:newCenter animated:YES];
希望它能幫助。
謝謝,我可以得到想要的效果。但我似乎無法與設置縮放級別結合使用。是否有可能將這與setRegion結合:?在先前調用setRegion之後調用代碼段會導致我放棄的「放大」,而不是顯示幾條街道的地圖,而是顯示整個國家的地圖。但是,如果我將調用setRegion移動到代碼片段之後,那麼它將再次在視圖中居中。 – Gruntcakes
我用一個替代答案更新了我的答案。請看一看。 – RaffAl
我敢肯定,有可能是一個MKMapViewKit解決方案......但如果你不能找到一個你可以永遠只是把地圖視圖一個名爲viewHolder然後就翻譯viewHolder了一切的一半的高度的UIView內另一種觀點是。確保viewHolder沒有啓用剪輯。 (使您的mkMapView框架更大以及佔譯文) –