我如何将我的mapview居中,以便所选的图钉不在地图的中间,而是在1/3的位置?

时间:2016-05-18 00:07:56

标签: ios swift mkmapview mapkit mkmapviewdelegate

我的地图上有一个针脚的坐标。我尝试将地图放在那个引脚上,但我不想将引脚直接放在地图的中间,而是放在屏幕的1/3处。我尝试在以下解决方法中执行此操作:

let coordinateRegion = MKCoordinateRegionMakeWithDistance(coordinatesOfThePin, 500, 500)
mapView.setRegion(coordinateRegion, animated: true)

let frame = mapView.frame
let myPoint = CGPointMake(frame.midX, frame.midY/3)
let myCoordinate = mapView.convertPoint(myPoint, toCoordinateFromView: mapView)

let coordinateRegion2 = MKCoordinateRegionMakeWithDistance(myCoordinate, 500, 500)

mapView.setRegion(coordinateRegion2, animated: true)

但它显示随机位置,具体取决于地图的第一个位置。你可以帮我重写我的代码,这样我就可以放一个引脚位置并得到如下结果:

-------------------
|                 |
|                 |
|        X        | <-- my pin in the 1/3 of the visible map area.
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
-------------------

1 个答案:

答案 0 :(得分:3)

如果您希望该点使用当前缩放比例,但只是以坐标为中心,使其在屏幕上方的1/3处,您可以设置centerCoordinate,然后将其轻推一个第六位是latitudeDelta的{​​{1}}:

span

根据您的需要调整func updateMapForCoordinate(coordinate: CLLocationCoordinate2D) { var center = coordinate; center.latitude -= self.mapView.region.span.latitudeDelta / 6.0; mapView.setCenterCoordinate(center, animated: true); } 的调整,但希望这说明了一种简单的方法。显然,这个小技巧只有在地图没有音高且没有旋转时才有效。

如果您想先放大,可以设置相机,然后重置center

centerCoordinate