我正在使用XCode 7.2和Swift 2.1开发iOS应用程序,并且我已经在我的应用程序中成功实现了MapKit地图.地图加载完美,并以用户当前位置为中心.
现在,如果用户将地图中心移动到新位置,我想检索中心坐标.按下按钮可以"捕获"这个新位置的坐标(参见附加的gif中的"设置网格参考"按钮)并显示在标签中.
我来回答最接近的是在这里,和我实现了代码,但我仍然无法弄清楚如何通过点击我创建了IBOutlet中按钮来更新坐标标签.
我在这里想念的是什么?!
任何帮助将非常感谢 - 提前感谢!
----------------关注问题------------------
现在我们已经解决了问题并且我们得到了新的中心坐标标签,我还有一个问题 - 最有可能是一个菜鸟疏忽,但我在这里有一个陡峭的学习曲线,所以请耐心等待.. .
我们已经成功确定了中心坐标,现在它们在我们创建的函数中设置为mapLongitude和mapLatitude.
我有两个其他变量(newTargetLong和newTargetLat),它们构成了一个值数组的一部分,将传递给下一个视图控制器,我想:
let newTargetLong = mapLongitude
let newTargetLat = mapLatitude
Run Code Online (Sandbox Code Playgroud)
这样就可以用.append指令将新的纬度和经度添加到数组中.
但由于某种原因,我只是无法将这两个值"超出"该功能.我需要做些什么才能实现这一目标?
我可以使用以下内容确定地图中心位置的纬度和经度:
func TargetGridReference(outletMapView_PrimaryTargetLocationMap: MKMapView, regionDidChangeAnimated animated: Bool) {
let ThreatGridReference = outletMapView_PrimaryTargetLocationMap.centerCoordinate
let mapLatitude = String(format:"%.13f",ThreatGridReference.latitude)
let mapLongitude = String(format:"%.13f",ThreatGridReference.longitude)
let latAndLong = "Lat: \(mapLatitude) \nLong: \(mapLongitude)"
self.outletLabel_TargetGridReference.text = latAndLong
tempThreatGridReference = ThreatGridReference
tempThreatGridReferenceLat = mapLatitude
tempThreatGridReferenceLon = mapLongitude
}
Run Code Online (Sandbox Code Playgroud)
这让我在巴黎艾菲尔铁塔的纬度如下:
Lat: 48.8582487759147
Long: 2.2945180844931
Run Code Online (Sandbox Code Playgroud)
如何在Swift中将上述内容转换为以下DMS格式?:
lat: 48° 51' 29.6956" N
long: 2° 17' 40.2651" E
Run Code Online (Sandbox Code Playgroud)
MapKit是否提供自动转换到各种坐标系统,如UTM,UPS,MGRS等?
我有以下内容:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedObjContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "RAS")
var error: NSError?
let predicate1 = NSPredicate(format: "%K AND %K == false", "rasScore", "rasStatus")
fetchRequest.predicate = predicate1
do {...
Run Code Online (Sandbox Code Playgroud)
这给了我所有符合NSPredicate参数的记录,但我只想要具有最高值的记录rasScore.我该怎么做呢?是否可以将其纳入NSPredicate格式?