MKMapView不会一次显示整个世界

时间:2016-01-24 03:28:19

标签: ios mapkit zoom

我正在开发一个跟踪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。因此,只有一个引脚可见,因为另一个引脚不在屏幕上。

Screenshots of problem

我需要在不滚动地图的情况下显示这两个点。

我还有一个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)

0 个答案:

没有答案