5

问候!我正在尝试在没有任何 Apple 代码示例的情况下使用MKMapView,尽管还有其他一些不同的清晰度。(我知道,“阅读友好手册。”我已经做到了,但不是 100% 清楚,所以请耐心等待。)

这是情况。我有一个MKMapView对象,其中我添加了一组大约十个MKPinAnnotation对象。到现在为止还挺好。一切都被合理地分配/释放,并且似乎没有来自 Instruments 的任何投诉。

在初始显示时,我设置了一个MKCoordinateRegion对象,中心点位于我们的第一个引脚位置,(任意)跨度为 0.2 x 0.2。然后我打电话给:

[mapView setRegion:region animated:YES];
[mapView regionThatFits:region];

哇!效果很好。

同时......我还有一个分段控制,允许移动到每个引脚位置。因此,当我点击列表时,地图会通过一对新的setRegion:animated:regionThatFits:调用来动画到每个新的 pin 位置……或者至少是这样。

虽然地图确实“移动”到新的大头针位置,但地图本身并不会在下方更新。相反,我在灰色/空白地图背景上看到了我的图钉……直到我向任何方向轻推地图,无论多么轻微。然后地图显示通过!(如果我只在前一个图钉位置的一小段距离内移动,我通常会看到地图的任何部分已经加载。)

我怀疑我在这里做了一些愚蠢的事情,但我无法弄清楚是什么,至少不是来自 MapKit 文档。也许我使用了错误的电话?(好吧,我确实需要至少设置一次区域,是吗?移动它似乎没有帮助。)我也尝试过使用setCenterCoordinate:animated: - 同样的问题。

我在这一点上没有任何假设(没有双关语)。只是想找到我的路。

欢迎/赞赏线索!

更新:调用setRegion:animated:regionThatFits:第一次,然后是setCenterCoordinate:animated:在遍历列表时没有效果。不过有趣的发现:如果我在这两种情况下都将动画更改为 NO,则地图会更新!!!仅当它设置为 YES 时。(发生了什么?!动画:坏了?那不可能……???)

4

4 回答 4

7

事实证明,使用 SIMULATOR 时地图更新不起作用。当我在设备上尝试setCenterCoordinate:animated:时,我确实得到了下面的地图更新。

底线:我相信模拟器在地图更新行为方面与设备相匹配。唉,我错了!学过的知识。“不要让这种事情发生在你身上。” :)

于 2009-07-28T12:14:16.007 回答
2

您需要setRegion:animated:在主线程上下文中调用调用。只需执行以下操作:

....
[self performSelectorOnMainThread:@selector(updateMyMap) withObject:nil waitUntilDone:NO];

}

-(void) updateMyMap {
    [myMap setRegion:myRegion animated:YES];    
}

它应该在任何情况下(动画或非动画)都可以工作,并且地图会在下面更新。

于 2009-07-27T12:11:37.230 回答
0

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

于 2009-07-31T08:17:43.287 回答
0

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

于 2010-10-07T14:40:49.400 回答