【问题标题】:Sanity Check an MKCoordinateRegion健全性检查 MKCoordinateRegion
【发布时间】:2011-01-12 04:24:10
【问题描述】:

有什么方法可以快速测试MKCoordinateRegion 的好坏?我已将纬度换成经度并导致应用程序崩溃。我希望能够在实际执行之前查看是否可以执行setRegionMKCoordinateRegionMake 会测试我给它的值吗?

谢谢。

【问题讨论】:

  • 可能想澄清“混淆”。您是否交换了纬度和经度值,或者您是否输入了超出范围的值?
  • 我交换了它们,但我真的很想在将值插入setRegion之前检查是否有任何问题@

标签: iphone cocoa-touch mkmapview


【解决方案1】:

原来我在某个地方交换了我的纬度和经度。这是我最终使用的代码:

// check for sane span values
if (currentRegion.span.latitudeDelta <= 0.0f || currentRegion.span.longitudeDelta <= 0.0f) {
    currentRegion.span.latitudeDelta = 1.0f;
    currentRegion.span.longitudeDelta = 1.0f;
}
// check for sane center values
if (currentRegion.center.latitude > 90.0f || currentRegion.center.latitude < -90.0f ||
    currentRegion.center.longitude > 180.0f || currentRegion.center.longitude < -180.0f
    ) {
    // Take me to Tokyo.
    currentRegion.center.latitude = 35.4f;
    currentRegion.center.longitude = 139.4f;
}

【讨论】:

  • 您可能还想检查currentRegion.span.latitudeDeltacurrentRegion.span.longitudeDelta 是否大于360.0f
【解决方案2】:

我并没有经常摆弄地图,所以对此持保留态度。

听起来您需要在使用它们之前对纬度、经度和跨度的值进行范围检查。 纬度和经度在所有情况下的值都应该在 -180 到 180 之间。

编辑01:

我认为交换纬度和经度不会导致崩溃。它们都具有完全相同的单位(度)和范围(-180-->180)。纬度的所有有效值也是经度的有效值,反之亦然。出于这个原因,MKCoordinateRegionMake 将无法判断您已经交换了值,因为它们仍然是有效的坐标,只是不在您想要的位置附近。

我认为您的问题出在其他地方。

【讨论】:

  • 感谢您的回答和编辑。经度的最大值为 180°,但纬度的最大值仅为 90°。我已经在代码中的其他地方交换了它们,但你的回答给了我关于要编写的代码的提示。 en.wikipedia.org/wiki/Latitude
  • 该死,我就知道!我的老童子军大师正在坟墓里翻来覆去。奇怪的是,即使你知道得更多,你也会陷入一个想法。当然,这确实解释了我为什么会撞上冰山。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2015-04-10
  • 1970-01-01
  • 2021-12-24
  • 2016-09-16
相关资源
最近更新 更多