gpt4 book ai didi

iphone - MKMapView setRegion "snaps"到预定义的缩放级别?

转载 作者:行者123 更新时间:2023-12-03 18:20:18 27 4
gpt4 key购买 nike

任何人都可以确认 setRegion “捕捉”到预定义的缩放级别以及此行为是否符合设计(尽管未记录)或已知的错误?具体来说,setRegion 似乎会捕捉到与用户双击 map 时使用的缩放级别相对应的相同缩放级别。

我正在尝试恢复以前保存的区域,但如果保存的区域是通过捏缩放而不是双击缩放来设置的,则此行为将无法恢复。

对我来说,Mapkit 方面出现问题的一个重要线索是,如果我在 map 的当前区域上调用regionThatFits,会发生什么情况。它应该返回相同的区域(因为它显然适合 map 的框架),但它返回与下一个更高的预定义缩放级别相对应的区域。

setVisibleMapRect 的行为类似。

任何进一步的见解或信息将不胜感激。

我找到了这些相关帖子,但既没有包含解决方案,也没有明确确认这实际上是一个 Mapkit 错误:

MKMapView setRegion: odd behavior?

MKMapView show incorrectly saved region

编辑:

这是一个演示该问题的示例。所有值都对我的 map View 的纵横比有效:

MKCoordinateRegion initialRegion;
initialRegion.center.latitude = 47.700200f;
initialRegion.center.longitude = -122.367109f;
initialRegion.span.latitudeDelta = 0.065189f;
initialRegion.span.longitudeDelta = 0.067318f;
[map setRegion:initialRegion animated:NO];
NSLog(@"DEBUG initialRegion: %f %f %f %f", initialRegion.center.latitude, initialRegion.center.longitude, initialRegion.span.latitudeDelta, initialRegion.span.longitudeDelta);
NSLog(@"DEBUG map.region: %f %f %f %f", map.region.center.latitude, map.region.center.longitude, map.region.span.latitudeDelta, map.region.span.longitudeDelta);

输出:

DEBUG initialRegion:  47.700199  -122.367111  0.065189  0.067318
DEBUG map.region: 47.700289 -122.367096 0.106287 0.109863

请注意纬度/经度增量值的差异。 map 的值几乎是我要求的两倍。较大的值对应于用户双击 map 时使用的缩放级别之一。

最佳答案

是的,它会捕捉到离散级别。我做了相当多的实验,似乎喜欢每个像素经度 2.68220906e-6 度的倍数。

因此,如果您的 map 填满屏幕的整个宽度,则第一个级别的跨度为 0.0008583 度,那么您可以获得的下一个级别是该值的两倍,即 0.001717,然后下一个级别的跨度是该值的两倍,即 0.003433,等等。我不确定他们为什么选择按经度标准化,这意味着修复缩放级别会根据您正在查看的世界的哪个部分而有所不同。

我也花了很多时间试图理解这个数字 0.68220906e-6 度的意义。赤道处的距离约为 30 厘米,这是有道理的,因为 Google map 使用的高分辨率照片具有 30 厘米的分辨率,但我希望他们使用纬度而不是经度来确定缩放级别。这样,在最大变焦时,您始终是卫星图像的原始分辨率,但谁知道呢,他们可能有一些聪明人的理由让它这样工作。

在我的应用程序中,我需要显示一定范围的纬度。我将编写一些代码来尝试将 map 缩放到尽可能接近的程度。如果有人感兴趣,请联系我。

关于iphone - MKMapView setRegion "snaps"到预定义的缩放级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com