ios - MKCoordinateRegion 与 region.span.latitudeDelta 之间的区别?
问题描述
我一直在学习一段代码,并试图理解MKCoordinateRegion
vs之间的区别region.span.latitudeDelta
?
MKCoordinateRegion region = {{0.0, 0.0}, {0.0, 0.0}};
region.center.latitude = latitude;
region.center.longitude = longitude;
region.span.latitudeDelta = 0.1f;
有人可以根据上述情况解释一下差异。我觉得第一行决定了地图的框架,但其余的似乎重复了这一点(我在地图上定义了框架和位置)
解决方案
是一个。_ 所以第一行用结构初始化一个局部变量(使用旧的 C89 约定):region
MKCoordinateRegion
MKCoordinateRegion region = {{0.0, 0.0}, {0.0, 0.0}};
随后的行只是用所需的值更新先前初始化的结构:
region.center.latitude = latitude;
region.center.longitude = longitude;
region.span.latitudeDelta = 0.1f;
对于它的价值,您也可以只实例化它并一步设置所有值(同样,使用 C89 约定):
MKCoordinateRegion region = { { latitude, longitude }, { 0.1, 0.1 } };
或者,现在,可以使用 C99 的指定初始化器约定:
MKCoordinateRegion region = {
.center = { .latitude = latitude, .longitude = longitude },
.span = { .latitudeDelta = 0.1, .longitudeDelta = 0.1 }
};
MKCoordinateRegion
同样,这一步初始化并填充(在这种情况下,以比 C89 模式更隐蔽的方式)。
另一种方法是构建CLLocationCoordinate2D
、MKCoordinateSpan
和MKCoordinateRegion
使用各种xxxMake
功能:
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(latitude, longitude);
MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
MKCoordinateRegion region = MKCoordinateRegionMake(center, span);
有关初始化 C 结构的更多信息,请参阅如何根据 C 编程语言标准初始化结构。此外,GCC 文档讨论了指定的初始化程序,包括结构。
或者,如果您尝试设置地图视图的区域,则可以使用另一种方法MKMapCamera
:
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(latitude, longitude);
MKMapCamera *camera = [MKMapCamera cameraLookingAtCenterCoordinate:center fromDistance:1000 pitch:0 heading:0];
[self.mapView setCamera:camera animated:true];
但是,底线region
实际上是地图将显示的纬度和经度坐标的范围(由 的组合定义,center
地图正在查看的位置,以及span
地图的可见程度)。
所有这些地图坐标和跨度不应与frame
地图视图的 混淆,后者是显示该区域的地图视图的视觉大小。
推荐阅读
- http - IP是如何拆分的?
- php - Woocommerce 自动添加到特定产品的购物车功能
- c# - 强制参数化
- typescript - TypeScript 错误地定义了类型
- angular - 如何使用 Jasmine 在 Angular 中测试我的服务?
- vue.js - [Vue 警告]:无法解析组件:ButtonElement at
参考=参考<未定义>> - wix - Wix Bootstrapper 如何以与安装顺序不同的顺序卸载软件包
- node.js - npm gpio 错误的初始化 gpio pin 值
- hybris - 如何在 Hybris 中使用 RotatingImagesComponent?
- docker - 是否可以使用 docker windows 容器中的 TBS 访问 docker windows 主机的 TPM?