【问题标题】:Calculate map region when drive in circle绕圈行驶时计算地图区域
【发布时间】:2019-09-20 15:20:24
【问题描述】:

在开车时,我会记录行驶过程中的不同坐标。如果我在通常在直线上的两点之间行驶,则以下代码的地图跨度运行良好,但如果我在街区周围行驶,则地图跨度不会显示路线。我通常可以看到,因为我使用的是第一个和最后一个坐标,这就是原因。然后将该区域放入快照中以生成地图图像。我正在努力解决的是能够使用所有坐标来计算所需的跨度。

//calculate region
let span = MKCoordinateSpan.init(latitudeDelta: fabs(startCoord.latitude - endCoord.latitude) * 1.6, longitudeDelta: fabs(endCoord.longitude - startCoord.longitude) * 1.6)
let resd = CLLocationCoordinate2D.init(latitude: startCoord.latitude - (startCoord.latitude - endCoord.latitude) * 0.5, longitude: startCoord.longitude + (endCoord.longitude - startCoord.longitude) * 0.5)

let options = MKMapSnapshotter.Options()
options.scale = UIScreen.main.scale
options.region = MKCoordinateRegion.init(center: resd, span: span);
options.size = CGSize(width: 600, height: 450) //map size
options.showsBuildings = true
options.showsPointsOfInterest = true

我在另一个问题上找到了code这一点

func regionFor(coordinates coords: [CLLocationCoordinate2D]) -> MKCoordinateRegion {
    var r = MKMapRect.null

    for i in 0 ..< coords.count {
        let p = MKMapPoint(coords[i])

        r = r.union(MKMapRect(x: p.x, y: p.y, width: 0, height: 0))
    }

    return MKCoordinateRegion(r)
}

但我也无法让它显示圆圈。有人知道我该怎么做吗?

【问题讨论】:

    标签: ios swift mapkit


    【解决方案1】:

    区域跨度是一个矩形。找到一个边界矩形比找到一个完全包围一组点的圆更简单。

    只需设置最大和最小纬度和经度变量,以相反方向超出范围的值开始,循环遍历您的点,当点坐标为 &gt;max&lt;min 时,替换它价值。完成后,使用最小-最大纬度和最小-最大经度值来定义您的区域跨度。

    【讨论】:

    • 所以如果我理解正确,只需获取坐标的最大值和最小值,然后将其用于区域跨度?
    • 是的,这就是我的建议。这非常简单易行。
    • 我的帖子看起来很糟糕,认为它包含 HTML 标签。我对其进行了编辑,因此您可以阅读我发布的内容。
    猜你喜欢
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    相关资源
    最近更新 更多