MKMapView和setRegion:animated:不更新地图视觉效果

时间:2009-07-08 00:14:12

标签: iphone-sdk-3.0 mapkit android-mapview

问候!我试图在没有任何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时。 (什么时候发生?!动画:破碎?那不可能...... ???)

4 个答案:

答案 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)

哼哼奇怪。即使在模拟器中,我的Mac上的地图也会更新。也许网络设置(代理或其他)会阻止地图小部件在模拟器上下载切片?

答案 3 :(得分:0)

虽然这是一个古老的话题,但我认为我会用我的经验来表达。似乎地图动画仅在运行iOS 3.1.x的设备和运行3.1.x的模拟器上失败。如果动画打开,我的带iPod 3.1的开发iPod touch无法缩放。