快速拟合注释

Posted

技术标签:

【中文标题】快速拟合注释【英文标题】:Swift fit annotations 【发布时间】:2015-06-01 18:35:45 【问题描述】:

我在解析中有几个正在查询的位置。它显示所有注释,但仅缩放最后一个注释。如何找到最大和最小纬度和经度并使它们适合?

*** 上有很多这些,但它们几乎都在 Objective-c 中。

【问题讨论】:

请不要发布代码截图。相反,复制并粘贴代码本身。 【参考方案1】:

Objective-C 中的示例基本上仍然有效,因为底层 SDK/API 仍然相同——只是使用不同的语言调用(并且总是有文档)。

要显示所有注释,基本上有两种方法:

    使用方便的showAnnotations 方法。您将一组注释传递给它,它会自动计算一个合理的区域来显示。您在添加所有注释后调用它(在您的 for 循环之后)。事实上,showAnnotations 甚至会添加注释本身,如果它们还没有出现在地图上的话。要显示地图上已经存在的所有注释,只需将地图自己的annotations 数组传递给它。示例:

    self.mapView.showAnnotations(self.mapView.annotations, animated: true)
    

    如果您对showAnnotations 计算的默认区域不满意,您可以自己计算一个。与其计算最小/最大纬度和经度等,我更喜欢使用内置的MKMapRectUnion 函数来创建一个适合所有注释的MKMapRect,然后调用setVisibleMapRect(mapRect,edgePadding,animated),它可以方便地在屏幕点周围定义填充拟合的地图矩形。这种技术最初是在 Apple 的一个非常早期的地图视图示例应用程序中发现的。示例:

    var allAnnMapRect = MKMapRectNull
    
    for object in objects! 
        //existing code that creates annotation...
        //existing code that calls addAnnotation...
    
        let thisAnnMapPoint = MKMapPointForCoordinate(annotation.coordinate)
        let thisAnnMapRect = MKMapRectMake(thisAnnMapPoint.x, thisAnnMapPoint.y, 1, 1)
        allAnnMapRect = MKMapRectUnion(allAnnMapRect, thisAnnMapRect)
    
    
    //Set inset (blank space around all annotations) as needed...
    //These numbers are in screen CGPoints...
    let edgeInset = UIEdgeInsetsMake(20, 20, 20, 20)
    
    self.mapView.setVisibleMapRect(allAnnMapRect, edgePadding: edgeInset, animated: true)
    

【讨论】:

谢谢你,Anna,这就像一个魅力 :) 我不擅长objective-c,所以有时会很困惑,我刚学了15天的swift

以上是关于快速拟合注释的主要内容,如果未能解决你的问题,请参考以下文章

Python 时间序列异常点检测 | tsmoothie 基于数据平滑/拟合的方法 简单却快速有效

vs2013如何快速批量注释,就是全部加上//的

vs2013如何快速批量注释,就是全部加上//的

LIO-PPF:通过增量平面预拟合和跟踪的快速激光雷达惯导里程计

vim快速注释技巧

快速入门和查询Python