【问题标题】:MapKit zoom button [duplicate]MapKit缩放按钮[重复]
【发布时间】:2017-08-28 10:07:45
【问题描述】:

我的问题是关于地图服务我正在使用带有自定义切片服务的地图现在我需要添加两个按钮或一个步进器来放大和缩小,并且我正在使用 MapKit 库。有人可以帮忙吗?

【问题讨论】:

  • 我有答案,但在目标 c

标签: ios swift mapkit


【解决方案1】:

查看答案

switch sender.tag {
    case 10:
    //Zoom In

        var region: MKCoordinateRegion = map_view.region
        region.span.latitudeDelta /= 2.0
        region.span.longitudeDelta /= 2.0
        map_view.setRegion(region, animated: true)
    case 20:

   //Zoom Out
        var region: MKCoordinateRegion = map_view.region
        region.span.latitudeDelta = min(region.span.latitudeDelta * 2.0, 180.0)
        region.span.longitudeDelta = min(region.span.longitudeDelta * 2.0, 180.0)
        map_view.setRegion(region, animated: true)
}

【讨论】:

  • Thnx dude? 简单易行地解决我的问题
【解决方案2】:

这是 swift 3 中的答案

放大

let region = MKCoordinateRegionMake(self.mapView.region.center, MKCoordinateSpanMake(mapView.region.span.latitudeDelta*0.7, mapView.region.span.longitudeDelta*0.7))
mapView.setRegion(region, animated: true)

用于缩小

   let zoom = getZoom() // to get the value of zoom of your map.
   if zoom > 3.5{ // **here i have used the condition that avoid the mapview to zoom less then 3.5 to avoid crash.**

            let region = MKCoordinateRegionMake(self.mapView.region.center, MKCoordinateSpanMake(mapView.region.span.latitudeDelta/0.7, mapView.region.span.longitudeDelta/0.7))
            mapView.setRegion(region, animated: true)
        }

在这里您可以获取地图视图的缩放程度。

func getZoom() -> Double {

    var angleCamera = self.mapView.camera.heading
    if angleCamera > 270 {
        angleCamera = 360 - angleCamera
    } else if angleCamera > 90 {
        angleCamera = fabs(angleCamera - 180)
    }
    let angleRad = Double.pi * angleCamera / 180
    let width = Double(self.view.frame.size.width)
    let height = Double(self.view.frame.size.height)
    let heightOffset : Double = 20
    let spanStraight = width * self.mapView.region.span.longitudeDelta / (width * cos(angleRad) + (height - heightOffset) * sin(angleRad))
    return log2(360 * ((width / 256) / spanStraight)) + 1;
}

它对我有用。

【讨论】:

  • 谢谢老兄,它也可以用?
猜你喜欢
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
相关资源
最近更新 更多