我想創建一個MKCoordinateRegion,其中用戶位置在中心,另一個座標應該在該區域內可見。簡而言之,我試圖以用戶位置爲中心,同時可以看到一定數量的註釋。我的方法是查看第N個最遠的座標所在的位置,並嘗試計算距離或座標區域,以此座標形成用戶位置座標。兩個座標之間的緯度/縱向差值是多少?
var topLeftCoord = CLLocationCoordinate2D(latitude: -90.0, longitude: 180.0)
var bottomRightCoord = CLLocationCoordinate2D(latitude: 90.0, longitude: -180.0)
topLeftCoord.longitude = fmin(topLeftCoord.longitude, outerLongitude)
topLeftCoord.latitude = fmax(topLeftCoord.latitude, outerLatitude)
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, outerLongitude)
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, outerLatitude)
topLeftCoord.longitude = fmin(topLeftCoord.longitude, userCoordinates.longitude)
topLeftCoord.latitude = fmax(topLeftCoord.latitude, userCoordinates.latitude)
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, userCoordinates.longitude)
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, userCoordinates.latitude)
let regionSpan = MKCoordinateSpanMake(fabs((topLeftCoord.latitude - bottomRightCoord.latitude)), fabs((bottomRightCoord.longitude - topLeftCoord.longitude)))
var region = MKCoordinateRegion(center: userCoordinates, span: regionSpan)
region = self.mapView.regionThatFits(region)
self.mapView.setRegion(region, animated: true)
這種作品,但我得到了一點偏離。我相信問題在於,在這裏我沒有考慮到用戶位置應該位於中心位置,因此此代碼只是確保用戶和outerLatitude
和outerLongitude
的座標位於該範圍內。但是,當以用戶座標爲中心時,外部座標不再可見。
我不能爲我的生活弄清楚這一點。我也試過這樣做:
let outerLocation = CLLocation(latitude: outerLatitude, longitude: outerLongitude)
let userLocation = CLLocation(latitude: userCoordinates.latitude, longitude: userCoordinates.longitude)
let distance = userLocation.distance(from: outerLocation)
var region = MKCoordinateRegionMakeWithDistance(userCoordinates, distance, distance)
region = self.mapView.regionThatFits(region)
self.mapView.setRegion(region, animated: true)
但我最終以相同的結果,我真的不明白。我得到了一個340米左右的距離(這很合理)。但MKCoordinateRegionMakeWithDistance
要求latitudinalMeters
和longitudinalMeters
其中我只需發送distance
從座標A到B.我找不到方法將組件拆分爲latitudinalMeters
和longitudinalMeters
,我可以簡單地在兩者之間獲得1個距離。
結果幾乎相同。我必須在這裏做其他事情。 – ClockWise