如何显示 MapKit 指南针?

2 mapkit ios swift compass

目前指南针只有在用户应用旋转手势时才会显示。否则指南针是隐藏的。

图像1


不过要是能实现我下面的两个愿望就好了!

  • 是否可以始终显示指南针?
  • 如何使用 Swift 显示/隐藏罗盘视图?

Pau*_*w11 7

通过使用新MKCompassButton类,您可以在 iOS 11 中轻松完成此操作。

您需要创建一个实例MKCompassButton并将其添加到您的地图视图中。然后,您可以将其compassVisibility属性设置为以下之一:

  • .visible - 始终可见
  • .never - 永远不可见
  • .adaptive - 指南针仅在地图从北/上方向旋转时才可见。

如果您在属性中保留对指南针的引用,则可以根据需要更改其可见性:

mapview.showsCompass = false  // Hide built-in compass

compassButton = MKCompassButton(mapView: mapview)   // Make a new compass
compassButton.compassVisibility = .visible          // Make it visible

mapview.addSubview(compassButton) // Add it to the view

// Position it as required

compassButton.translatesAutoresizingMaskIntoConstraints = false
compassButton.trailingAnchor.constraint(equalTo: mapview.trailingAnchor, constant: -12).isActive = true
compassButton.topAnchor.constraint(equalTo: mapview.topAnchor, constant: 12).isActive = true
Run Code Online (Sandbox Code Playgroud)

不幸的是,对于之前的 iOS 版本,没有简单的解决方案。我已经看到一些建议,涉及查看地图视图的子视图以尝试找到指南针视图,但结果似乎好坏参半。