6

我一直在寻找一种解决方案来放大 MapView 以适应 Swift 中 MKPolyline 的边界。我已经能够在 SO 上找到 Objective-C 的示例代码,但我一点也不熟悉 Objective-C 或如何将其转换为 Swift。

有人会在 Swift 中有这样的例子吗?谢谢。

-(void)zoomToPolyLine: (MKMapView*)map polyline: (MKPolyline*)polyline animated: (BOOL)animated
{
[map setVisibleMapRect:[polyline boundingMapRect] edgePadding:UIEdgeInsetsMake(10.0, 10.0, 10.0, 10.0) animated:animated];
}
4

3 回答 3

11

此代码将区域设置为显示整条折线,以及每边 12.5% 的填充。

        var regionRect = myPolyline.boundingMapRect


        var wPadding = regionRect.size.width * 0.25
        var hPadding = regionRect.size.height * 0.25

        //Add padding to the region
        regionRect.size.width += wPadding
        regionRect.size.height += hPadding

        //Center the region on the line
        regionRect.origin.x -= wPadding / 2
        regionRect.origin.y -= hPadding / 2

        myMapView.setRegion(MKCoordinateRegionForMapRect(regionRect), animated: true)

如果您不想要填充,请执行此操作

        var regionRect = myPolyline.boundingMapRect
        myMapView.setRegion(MKCoordinateRegionForMapRect(regionRect), animated: true)
于 2015-05-06T13:25:46.367 回答
2
func zoomToPolyLine(map : MKMapView, polyLine : MKPolyline, animated : Bool)
{
 map.setRegion(MKCoordinateRegionForMapRect(polyLine.boundingMapRect), animated: animated)
 }
于 2015-09-01T11:17:28.550 回答
1

在计算方向后将其写在代码行下面。下面的代码对我有用。

//this code is used to fit two points polyline in mapview
  let newDistance = CLLocation(latitude: pickupCoordinate.latitude, longitude: pickupCoordinate.longitude).distance(from: CLLocation(latitude: destinationCoordinate.latitude, longitude: destinationCoordinate.longitude))
  let region = MKCoordinateRegion(center: pickupCoordinate, latitudinalMeters: 2 * newDistance, longitudinalMeters: 2 * newDistance)
  let adjustRegion = self.mapView.regionThatFits(region)
  self.mapView.setRegion(adjustRegion, animated:true)

屏幕截图如下。

在此处输入图像描述

希望它会帮助一些人。

于 2019-08-09T09:09:38.160 回答