swift - 通过分段控制更改 map 类型(混合、卫星)

标签 swift mkmapview hybrid

我正在尝试使用分段控制按钮更改 map 类型,我希望它可以通过 3 个选项更改 map 类型:标准、卫星和混合。到目前为止,我有这段代码,但是一旦选择了不同的 map 类型,什么也不会发生:

@IBAction func segmentedControlAction(sender: UISegmentedControl!) {

    if sender.selectedSegmentIndex == 0{

        mapView.mapType = MKMapType.Standard
    }
    else if sender.selectedSegmentIndex == 1{

        mapView.mapType = MKMapType.Satellite
    }
    else if sender.selectedSegmentIndex == 3{

        mapView.mapType = MKMapType.Hybrid
    }
}

我是 Swift 和 Xcode 的新手,所以非常感谢您的帮助:)

谢谢

最佳答案

首先,确保在分段控件选择更改时调用您的方法。很容易忘记连接 socket 方法。确认后,请记住 map 数据是异步加载的,因此您可能不会在选择不同模式后立即看到它发生变化。但是,使用您发布的代码,您永远不会看到 .Hybrid 类型,因为 3 段控件中的 selectedSegmentIndex永远是3。

实现此方法的更简洁的方法是:

@IBAction func segmentedControlAction(sender: UISegmentedControl!) {
    switch (sender.selectedSegmentIndex) {
        case 0:
            mapView.mapType = .Standard
        case 1:
            mapView.mapType = .Satellite
        default:
            mapView.mapType = .Hybrid
    }
}

请注意,Swift 不需要在每个 case 末尾都有 break 语句。

编辑:Swift 4.1

@IBAction func mapTypeSegmentSelected(_ sender: UISegmentedControl) {
        switch sender.selectedSegmentIndex {
        case 0:
            mapView.mapType = .standard
        case 1:
            mapView.mapType = .satellite
        default:
            mapView.mapType = .hybrid
        }
    }

关于swift - 通过分段控制更改 map 类型(混合、卫星),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200161/

相关文章:

swift - 每次用户选择另一种颜色时如何更改对比度?

ios - UITableView 在滚动时重新加载数据

iPhone map 套件 : Annotation images get reset back to pins

c++ - 在 Fortran 程序中使用 Boost 图形库 (BGL)

javascript - 如何在混合应用程序中创建图形

ios - 在 Swift 中检查字符串是否为 3 个字符和 3 个数字

xcode - 在 Xcode 7.0 中获取框架相关警告

ios - Facebook Audience Network 中的代码=1001 "No fill"错误

iphone - 如何在mapView上画一个圆

javascript - 使用javascript以管理员身份运行批处理的简单方法