创建覆盖极点的MKPolygon多边形的正确实现方法是什么
问题原因
MapKit 绘制 MKPolygon 时会默认将相邻顶点沿球面最短路径连接,你提供的所有顶点都位于南纬70°环绕南极点,系统会默认沿纬度线连接顶点,最终形成的是沿南纬70°的闭合环,而非向南覆盖到南极点的区域,所以只会显示环形或者直线。
设置 hybridFlyover 没有效果是因为该设置仅更改地图渲染样式,不影响多边形的路径计算逻辑。
正确实现方法
需要在坐标数组中明确包含极点坐标,同时保证经度数值的连续性,避免跨180°经线时路径计算错误:
// 覆盖南极点的多边形示例:覆盖南纬70°到南极点的所有区域 let coordinates = [ CLLocationCoordinate2D(latitude: -70, longitude: 0), CLLocationCoordinate2D(latitude: -70, longitude: 90), CLLocationCoordinate2D(latitude: -70, longitude: 180), // 此处用270等同于-90,保证经度数值连续,不会往反方向绕路 CLLocationCoordinate2D(latitude: -70, longitude: 270), // 加入南极点坐标,明确区域覆盖到极点 CLLocationCoordinate2D(latitude: -90, longitude: 0) ] let polygon = MKPolygon(coordinates: coordinates, count: coordinates.count)
如果需要覆盖北极点,只需要将极点纬度改为90,外围顶点的纬度改为对应北纬数值即可。
内容的提问来源于stack exchange,提问作者sbooth
相关产品推荐
相关产品推荐

