在标签中显示 CLLocation Xcode 7 Swift 2
Displaying CLLocation in label Xcode 7 Swift 2
嘿,我是编写 iOS 应用程序的新手,到目前为止我觉得它相当有趣..
我在将纬度和经度分配给文本字段时遇到问题。我一直在学习一个教程,但它失败了,我发现的大多数例子都在 objective C 而不是 swift.. 而 swift 中的例子并不是最好的。 .
我的ViewController如下:
import UIKit
import MapKit
class LocationVC: UIViewController, MKMapViewDelegate {
@IBOutlet weak var map: MKMapView!
@IBOutlet weak var latField: UITextField!
@IBOutlet weak var lngField: UITextField!
@IBOutlet weak var locateBtn: UIButton!
@IBOutlet weak var saveBtn: UIButton!
let regionRadius: CLLocationDistance = 500
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
map.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
}
override func viewDidAppear(animated: Bool) {
locationAuthStatus()
}
func locationAuthStatus() {
if CLLocationManager.authorizationStatus() == .AuthorizedWhenInUse {
map.showsUserLocation = true
} else {
locationManager.requestWhenInUseAuthorization()
}
}
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 1, regionRadius * 1)
map.setRegion(coordinateRegion, animated: true)
}
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
if let loc = userLocation.location {
centerMapOnLocation(loc)
}
let latField = location.longitude
let lngField = location.latitude
}
}
到目前为止,地图正在移动,可以在我的设备上运行,但我不知道如何显示坐标..
如果这是一个菜鸟问题,请原谅我,但我就是无法解决这个该死的问题..
用这个替换你的 mapView(_ :,didUpdatedUserLocation:)...
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
if let loc = userLocation.location
{
centerMapOnLocation(loc)
self.latField.text = "\(loc.coordinate.latitude)"
self.lngField.text = "\(loc.coordinate.longitude)"
}
}
注意:如果您只需要显示 lat/lng,使用 UILabel 而不是 UITextFiel
可能是更好的主意
嘿,我是编写 iOS 应用程序的新手,到目前为止我觉得它相当有趣..
我在将纬度和经度分配给文本字段时遇到问题。我一直在学习一个教程,但它失败了,我发现的大多数例子都在 objective C 而不是 swift.. 而 swift 中的例子并不是最好的。 .
我的ViewController如下:
import UIKit
import MapKit
class LocationVC: UIViewController, MKMapViewDelegate {
@IBOutlet weak var map: MKMapView!
@IBOutlet weak var latField: UITextField!
@IBOutlet weak var lngField: UITextField!
@IBOutlet weak var locateBtn: UIButton!
@IBOutlet weak var saveBtn: UIButton!
let regionRadius: CLLocationDistance = 500
let locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
map.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
}
override func viewDidAppear(animated: Bool) {
locationAuthStatus()
}
func locationAuthStatus() {
if CLLocationManager.authorizationStatus() == .AuthorizedWhenInUse {
map.showsUserLocation = true
} else {
locationManager.requestWhenInUseAuthorization()
}
}
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, regionRadius * 1, regionRadius * 1)
map.setRegion(coordinateRegion, animated: true)
}
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
if let loc = userLocation.location {
centerMapOnLocation(loc)
}
let latField = location.longitude
let lngField = location.latitude
}
}
到目前为止,地图正在移动,可以在我的设备上运行,但我不知道如何显示坐标..
如果这是一个菜鸟问题,请原谅我,但我就是无法解决这个该死的问题..
用这个替换你的 mapView(_ :,didUpdatedUserLocation:)...
func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation) {
if let loc = userLocation.location
{
centerMapOnLocation(loc)
self.latField.text = "\(loc.coordinate.latitude)"
self.lngField.text = "\(loc.coordinate.longitude)"
}
}
注意:如果您只需要显示 lat/lng,使用 UILabel 而不是 UITextFiel
可能是更好的主意