背景:我正在构建一系列基于位置的应用,这些应用会大量使用地图。这些地图使用从服务器获取的位置进行注释,我向其传递了我需要数据的地图区域(定义为lat / long和latDelta / longDelta,非常类似于MKCoordinateRegion,但具有不同的参考坐标位置) 。我正在编写一堆帮助方法/类来管理这些区域。需要与iOS 3.x的兼容性(意味着MKMapRect已经出局)。
问题:我是否通过将MKCoordinateRegions视为矩形来让自己失败?具体来说,我将它们的几何形状视为矩形的几何形状,假设它们具有与矩形基本相同的属性。我已经实现了几个镜像CGRect的辅助方法的方法,比如MKCoordinateRegionUnion / Inset / Outset等,它们都通过了我的单元测试,但我开始质疑我的基本假设是否正确。我知道事实上MKCoordinateRegion并不代表一个几何矩形,而是一个由两组平行平面约束的球面区域,彼此垂直(如果有人可以为我提供一个更好的术语,可以获得奖励积分)。
我还没有遇到任何异常现象,但由于很多应用程序都依赖于我对几何的理解,所以我现在想弄清楚我是否走错了路。我在学校的大部分课程中处理三维径向几何的事实并没有让我对我的直觉是正确的充满信心。
答案 0 :(得分:5)
如果你考虑到赤道,本初子午线和日线边缘情况,我想你会没事的。
或者,您可以像rects一样开发自己的MKMapRect。特洛伊布兰特有一个很棒的博客文章,关于如何形成法案:
http://troybrant.net/blog/2010/01/mkmapview-and-zoom-levels-a-visual-guide/
虽然博文主要是关于缩放级别,但是可以使用所有信息来构建自己的map rect库。
对于球体表面上以大圆圈为界的区域,它们被称为球面多边形。所以我想你可以称它们为球形矩形。