- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我有以下功能来为我的应用程序设置我的 map 区域:
func mapRegion() -> MKCoordinateRegion {
databaseHandle = databaseRef.child("RunList").child(runName).observe(.value, with: { (snapshot) in
let runData = snapshot.value as? [String: AnyObject]
self.minLat = runData?["startLat"] as? Double
self.minLng = runData?["startLong"] as? Double
self.maxLat = runData?["endLat"] as? Double
self.maxLng = runData?["endLong"] as? Double
print("testing")
print(self.minLat!)
print(self.maxLng!)
self.coordinate = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: (self.minLat! + self.maxLat!)/2,
longitude: (self.minLng! + self.maxLng!)/2),
span: MKCoordinateSpan(latitudeDelta: (self.maxLat! - self.minLat!)*1.1,
longitudeDelta: (self.maxLng! - self.minLng!)*1.1))
})
return coordinate
}
我已经在我的类的顶部初始化了以下变量:
var minLat: Double!
var minLng: Double!
var maxLat: Double!
var maxLng: Double!
var coordinate: MKCoordinateRegion!
我正在尝试按如下方式设置 map 区域:
override func viewDidLoad() {
super.viewDidLoad()
configureView()
mapView.region = mapRegion()
}
我遇到的错误是在我将坐标区域设置在包含 mapRegion() 中的 databaseHandle 的代码块下的行中。当代码运行时,我在“返回坐标”行下收到以下错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
据我了解,发生这种情况是因为“坐标”没有值并且是可选的。为什么即使我使用全局变量设置坐标也没有值?我觉得我错过了一些如此简单的东西!
谢谢
最佳答案
您的代码不起作用,因为 observe
异步工作,并且不可能从包含异步任务的方法返回值。
你需要一个完成处理器
func mapRegion(completion: (MKCoordinateRegion)->()) {
databaseHandle = databaseRef.child("RunList").child(runName).observe(.value, with: { (snapshot) in
let runData = snapshot.value as? [String: AnyObject]
self.minLat = runData?["startLat"] as? Double
self.minLng = runData?["startLong"] as? Double
self.maxLat = runData?["endLat"] as? Double
self.maxLng = runData?["endLong"] as? Double
print("testing")
print(self.minLat!)
print(self.maxLng!)
let region = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: (self.minLat! + self.maxLat!)/2,
longitude: (self.minLng! + self.maxLng!)/2),
span: MKCoordinateSpan(latitudeDelta: (self.maxLat! - self.minLat!)*1.1,
longitudeDelta: (self.maxLng! - self.minLng!)*1.1))
completion(region)
})
}
并使用它
mapRegion() { region in
mapView.region = region
// do other things with the region
}
边注:
代码中问号太多。使用可选绑定(bind)来安全地解包可选。
关于ios - 为什么我的 MKCoordinateRegion 为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471463/
我将此代码用于iPhone iOS 5.0设备。一切都很好: self.mapView = [[[MKMapView alloc]init] autorelease]; mapView.delegat
如何创建 MKCoordinateRegion 。 NSString *latitudeString = [locationString substringToIndex:startRang
我正在缩放 MKMapView 以适应图钉集合的边界区域,但是当显示图钉时,我注意到理想情况下缩放可以更紧一些。我提出的解决方案是使区域增量稍微小一些: // SMALL ZOOM region.sp
我有一个坐标区域,我已确定该区域包含我想为我的应用程序显示的内容的限制。我已将其设置为具有中心点纬度、经度和跨度的 MKCoordinateRegion。如何确定当前 userLocation 是否在
所以我有以下功能来为我的应用程序设置我的 map 区域: func mapRegion() -> MKCoordinateRegion { databaseHandle = databaseR
背景:我正在构建一系列大量使用 map 的基于位置的应用程序。这些 map 用从服务器获取的位置进行注释,我将需要数据的 map 区域传递给这些 map (定义为纬度/经度和纬度/长三角,很像 MKC
MKCoordinateRegion 的跨度是表示中心到每个边界的距离还是边界到边界的距离? 如果我想计算区域的边界,我从中心添加/减去跨度,还是需要/2? lowerLatitude=center-
(根据评论修改问题:) 好的,我会尝试以其他方式询问......我怎样才能得到这个圆覆盖的边界坐标: (原题:) 我的 iPhone 应用程序出现奇怪的问题。我有 MKCoordinateRegion
是否可以在@App Storage 中保存 MKCoordinateRegion 值? 我试过这个。但它不起作用。我收到错误“调用初始化程序时没有完全匹配”。 @AppStorage("reg
我正在使用以下代码缩小 map MKMapView 。 float zoom=1.5; MKCoordinateRegion region; //Set Zoom level using Span M
当使用 MKCoordinateRegionMakeWithDistance 为 MKMapView 设置区域时,生成的区域总是给出错误的结果,其中的尺寸总是比我为其他手机型号获得的最佳尺寸略大。 例
我在 map 上显示了一些注释(某些点) map 会放大或缩小以适合所有点 - 请参阅下面的工作代码。 MKPolygon *poly = [MKPolygon polygonWithPoints:s
我正在尝试合并两个 MKCoordinateRegion。有人知道如何执行此操作吗? 最佳答案 有一个 MKMapRectUnion 函数接受两个 MKMapRects 所以你可以先将每个 MKCoo
我的应用程序中有一个方形 MKMapView,我希望设置一个中心点和以米为单位的 View 的确切高度/宽度。 创建一个 MKCoordinateRegion 并将 map 设置到它(如在此代码中..
我有一个 CLLocation 点(纬度/经度),我想知道它是否在确定的 MKCoordinateRegion 中。我想知道哪个区域是以前制作的 CLLocation 点。 谢谢。 我找到了解决方案。
我注意到,如果我使用 MKMapView 的 selectAnnotation:animated:,如果 MKAnnotation 未显示在我的 map 显示的当前 MKCoordinateRegio
它们都指定了 map 中心和方框的大小。 那么为什么要同时使用两者呢? MKMapview 中的一些函数使用一个,一些使用另一个 (MKCoordinateRegion)regionThatFits:
我正在使用 GoogleMaps SDK,目前我正在尝试将 GMSVisibleRegion 转换为 CLRegion。 GMSVisibleRegion 定义为: typedef struct {
我需要检查用户位置是否属于 MKCoordinateRegion。我很惊讶没有为此找到简单的函数,类似于:CGRectContainsCGPoint(rect, point)。 我找到了以下代码: C
我有一个纬度和经度坐标,我想将其作为 map 的焦点。它们存储为 NSStrings 并转换为以下位置: NSString *placeLatitude = [elementCoords object
我是一名优秀的程序员,十分优秀!