问候!我试图在没有任何Apple代码示例的情况下使用 MKMapView ,尽管还有其他一些不同的清晰度。 (我知道,“阅读友好的手册。”我已经做到了,但并非100%明确,所以请耐心等待。)
这是情况。我有一个 MKMapView 对象,其中我添加了一组约十个 MKPinAnnotation 对象。到现在为止还挺好。一切都得到妥善分配/释放,似乎没有任何来自仪器的投诉。
初次显示时,我设置了一个 MKCoordinateRegion 对象,其中心点位于第一个引脚位置,(任意)跨度为0.2 x 0.2。然后我打电话给:
[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];
哇!这很好用。
同时......我还有一个分段控制,允许移动到每个引脚位置。因此,当我点击列表时,地图会通过一对新的 setRegion:animated:和 regionThatFits: ...或至少一对新的引脚位置进行动画制作。这就是想法。
当地图“移动”到新的引脚位置时,地图本身不会在下面更新。相反,我在灰色/空白地图背景上看到我的图钉...... 直到我向任何方向轻推地图,不过有点轻微。然后地图显示通过! (如果我只是在前一个引脚位置的一小段距离内移动,我通常会看到已经加载了地图的任何部分。)
我怀疑我在这里做了一些蠢事,但我无法弄清楚是什么,至少不是来自MapKit文档。也许我正在使用错误的电话? (好吧,我确实需要设置该区域至少一次,是吗?移动它似乎没有帮助。)我也尝试使用 setCenterCoordinate:animated: - 同样的问题。
我现在什么都不做(没有双关语)。只是想找到自己的方式。
线索欢迎/赞赏!
更新:第一次调用 setRegion:animated:和 regionThatFits:,然后在遍历列表时调用 setCenterCoordinate:animated:,没有效果。有趣的发现:如果我在两种情况下都将动画更改为NO,则地图会更新!!!只有当它设置为YES时。 (什么时候发生?!动画:破碎?那不可能...... ???)
答案 0 :(得分:7)
事实证明,使用SIMULATOR时地图更新不起作用。当我在设备上尝试 setCenterCoordinate:animated:时,我做获取下面的地图更新。
结论:我相信模拟器在地图更新行为方面与设备相匹配。唉,我错了!学过的知识。 “不要让这件事发生在你身上。” :)
答案 1 :(得分:2)
您需要在主线程上下文中调用setRegion:animated:
调用。
做一些像:
....
[self performSelectorOnMainThread:@selector(updateMyMap) withObject:nil waitUntilDone:NO];
}
-(void) updateMyMap {
[myMap setRegion:myRegion animated:YES];
}
它应该适用于任何情况(动画与否),地图在下面更新。
答案 2 :(得分:0)
答案 3 :(得分:0)
虽然这是一个古老的话题,但我认为我会用我的经验来表达。似乎地图动画仅在运行iOS 3.1.x的设备和运行3.1.x的模拟器上失败。如果动画打开,我的带iPod 3.1的开发iPod touch无法缩放。