【发布时间】:2013-04-09 02:21:55
【问题描述】:
我有一个MKMapView 和annotation pins。当视图被加载时,最近的 pin 被搜索并且地图将被缩放,因此它同时显示用户的位置和最近的 pin。我用[map setRegion:region animated:YES]; 做到这一点。到目前为止一切正常。同样的方法也可以通过点击一个按钮来定位用户,然后执行我刚才描述的操作。
我还有一个搜索字段,用户可以使用它搜索地图点。当用户点击其中一个搜索结果时,地图会设置区域,因此搜索到的图钉位于中间。 现在,这有点奇怪。我还设置了这个区域动画,至少我执行与上面相同的命令。但是,如果地图点离地图的当前可见部分太远,则在更改区域时不会显示动画。 我错过了什么吗?我已经看过 Apple 的文档,他们没有提到任何关于动画最大距离的内容。
我期待任何帮助!
更新 1:
刚刚在模拟器中再次测试。一个有趣的事实是,当我第一次搜索 MapPoint 然后选择一个搜索结果时,它没有动画。如果我在第一个搜索之后执行另一个搜索并选择一个结果,它会生成动画。一旦我点击定位按钮,它会将用户带回到他的位置和最近的点,它不会为这个setRegion: 和之后的第一次搜索设置动画。但仅在模拟器中,在我的 4S 上,它完全符合我在上面原始问题中的描述。
更新 2:
在 cmets 中,我被要求提供示例坐标。
所以这里是第一步的坐标(搜索自己的位置和最近的 pin):
我的位置: 47.227131 / 8.264251
最近的 pin: 47.251347 / 8.357191
他们之间的距离约为22公里。地图的中心是两个图钉之间的中心。从中心到屏幕边框的距离是两点之间距离的 1.5 倍,在这种情况下约为 33 公里。
这里是第二步的一组坐标(搜索地图点并选择它):
搜索的图钉: 46.790680 / 9.818824
到屏幕边框的距离在这里固定为 500 米。
【问题讨论】:
-
您是否尝试过使用MKMapViewDelegate 并查看
mapView:regionDidChangeAnimated:的调用频率以及animated的设置? -
@mluisbrown 是的,我正在使用委托方法,并且我已经测试过:动画属性是 NO... 似乎 iOS 在任何地方都发生了变化,但这对我来说没有意义...
-
@mluisbrown 更正:并不总是 NO,只要它没有设置动画区域...
-
至少和你看到的一致。您是否在应用的主线程上调用
setRegion:animated? -
@mluisbrown 是的,它在主线程上。这也是我首先假设的,但我在调用
setRegion:animated之前将当前线程打印到日志中,并且它在主线程上调用。
标签: iphone ios objective-c mkmapview