【问题标题】:ios: disable mapView update after adding annotations and calling mapView.showAnnotations()ios: 添加注释并调用 mapView.showAnnotations() 后禁用 mapView 更新
【发布时间】:2016-07-19 01:20:54
【问题描述】:

我刚刚构建了一个 swift 应用程序,它从 dynamoDB 获取 data+coords 并将其放到 ios mapkit 上。有两组coords:一组用于当前用户位置,一组来自dynamoDB。我希望这些coords 能够在地图内更新,但根本不希望实际的mapView 缩放和移动(只有用户可以缩放和移动)。

除了最后一部分,我已经完成了以上所有事情。当前,每当添加注释并调用 mapView.showAnnotations 时,mapView 就会缩放并移动以包含注释。如何禁用此功能?

【问题讨论】:

  • 最终编辑:经过一番搜索,我将 mapView.showAnnotations() 更改为 mapView.addAnnotations()。这通过显示您的注释但不更新您的 mapView 定位解决了问题。

标签: ios swift mapkit


【解决方案1】:

要在不更新 mapView 缩放和约束的情况下显示 mapView 注释,请使用 addAnnotations() 而不是 showAnnotations。

【讨论】:

    【解决方案2】:

    我猜您使用了在线代码(我们都这样做,不用担心)并且您的代码看起来像 this。如果我是对的,那么您可能在某处有这样的一行:

    [map setRegion:scaledRegion animated:YES];
    

    那条线就是问题所在。您需要使用某种布尔值来使它只发生一次。所以你可以设置布尔值has_mapped = false,直到你调用了一次更新方法,此时它是= true。然后改变你的台词,比如,

    if (has_mapped)
        [map setRegion:scaledRegion animated:YES]; 
    

    【讨论】:

    • 是的 - 你是对的,我在 ViewDidLoad 中调用了该行。但是,当我将其标记出来时,似乎对自动缩放没有任何影响 - 地图仍然继续缩放到注释和北方。我检查了代码,我认为没有另一个 setRegion 实例。你认为它默认设置为自动缩放吗?
    • 有趣!当它刷新时,会调用什么代码?我会在那里检查,看看是否有任何与边界框相关的东西。或者,是否会因为某种原因再次调用 viewDidLoad?您可以使用 NSLog 语句来跟踪它。另外,尝试将其设置为视图中的特定硬编码区域确实加载,并查看它是否在刷新时发生变化。
    • 'mapView.showAnnotations()' 是否可能正在缩放和移动 mapView ?我似乎无法在应用程序中找到它可能移动的任何其他点..
    • 最终编辑:经过一番搜索,我将 mapView.showAnnotations() 更改为 mapView.addAnnotations()。这通过显示您的注释但不更新您的 mapView 定位解决了问题。
    • 太棒了!对不起,我的分析错了,但很高兴我能帮助你在正确的方向上指出解决问题的方向哈哈 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    相关资源
    最近更新 更多