我正在开发一个跟踪Swift移动的应用程序,用于从A点locationOne
行进到B点:locationTwo
。 MapView应该在地图上显示两个点,它们位于它们之间。
我实现了一个函数来确定this link的中心位置,虽然我不得不修改它以在Swift中运行。该函数称为findCenterPoint
。
然后,我将mapView的区域设置为MKCoordinateRegion。此区域的创建方式如下:let region = MKCoordinateRegionMakeWithDistance(center, 2*distanceOne, 2*distanceTwo)
,然后mapView的区域设置如下:mapView.setRegion(region, animated: false)
我将距离乘以2,以便我们在两个位置的边上有一个边距(locationOne的注释,以及locationTwo:用户位置)
问题在于:如果这两个点距离很远,即纽约和澳大利亚的某个地方(我们只说一般的澳大利亚)应用程序无法显示这两个点,因为它们不适合mapView。因此,只有一个引脚可见,因为另一个引脚不在屏幕上。
我需要在不滚动地图的情况下显示这两个点。
我还有一个degreesToRadians
函数,在下面的代码中使用。
TL; DR :我的应用程序的mapView不够大,无法在地图上显示两个远处的点,并且已经缩小到最大值。
这是实际的代码:
var center = findCenterPoint(firstLocation.coordinate, locTwo: placemark.coordinate)
let earthRadius: Double = 6371000
distance = degreesToRadians(placemark.coordinate.latitude - firstLocation.coordinate.latitude)
lonDistance = degreesToRadians(placemark.coordinate.longitude - firstLocation.coordinate.longitude)
let region = MKCoordinateRegionMakeWithDistance(center, earthRadius*distance, earthRadius*lonDistance)
mapView.setRegion(region, animated: false)