MKMapView 边界
Posted
技术标签:
【中文标题】MKMapView 边界【英文标题】:MKMapView Bounds 【发布时间】:2019-06-11 18:19:47 【问题描述】:我要从 Google 地图转到 Apple 地图。 Google 地图能够根据东北和西南坐标更新相机,如下所示:
let bounds = GMSCameraUpdate.fit(GMSCoordinateBounds(northEastSouthWestBounds), with: .zero)
self.mapView.moveCamera(bounds)
我知道我可以使用setVisibleMapRect(_:animated:)
,它接受MKMapRect
。我真正的问题是如何根据东北坐标(CLLocation)和西南坐标(CLLocation)创建MKMapRect
。
【问题讨论】:
看看这段MapKit 文档。看起来heading
是您要修改的属性。
感谢您的回复,但我相信heading
指的是别的东西。地图正北的度数偏移
你是对的。误读了你的问题。 @fhipllipe 答案就是你要找的。span>
【参考方案1】:
根据您的坐标构造一个MKMapRect
并将其传递给setVisibleMapRect(_:animated:)
或setVisibleMapRect(_:edgePadding:animated:)
。
从不同点类型的数组创建MKMapRect
:
import MapKit
extension Array where Element == CLLocationCoordinate2D
func mapRect() -> MKMapRect?
return map(MKMapPoint.init).mapRect()
extension Array where Element == CLLocation
func mapRect() -> MKMapRect?
return map MKMapPoint($0.coordinate) .mapRect()
extension Array where Element == MKMapPoint
func mapRect() -> MKMapRect?
guard count > 0 else return nil
let xs = map $0.x
let ys = map $0.y
let west = xs.min()!
let east = xs.max()!
let width = east - west
let south = ys.min()!
let north = ys.max()!
let height = north - south
return MKMapRect(x: west, y: south, width: width, height: height)
【讨论】:
我想这是我真正的问题,应该更新我的帖子。如何从边界创建 MKMapRect? 什么是“界限”?是MKMapPoint
的数组还是CLLocationCoordinate2D
的数组?
我已更新答案以返回需要使用 MKMapPoint
的正确值。
非常感谢!这就是我一直在寻找的。span>
以上是关于MKMapView 边界的主要内容,如果未能解决你的问题,请参考以下文章