如何获取SwiftUI新Map组件可视区域边角的CLLocationCoordinate2D坐标?
SwiftUI新Map组件获取可视区域边角坐标
要获取地图可视区域的边角坐标,核心是利用MapReader提供的MapProxy实例,它能直接获取当前地图的可视范围信息。
直接在你标注的位置添加如下代码即可:
.onReceive(locationMgr.$location) { location in // 获取可视区域边角坐标 if let visibleRegion = mapProxy.visibleRegion { // 东北顶点 let northEastCoord = visibleRegion.northEast // 西南顶点 let southWestCoord = visibleRegion.southWest // 推导西北顶点 let northWestCoord = CLLocationCoordinate2D( latitude: northEastCoord.latitude, longitude: southWestCoord.longitude ) // 推导东南顶点 let southEastCoord = CLLocationCoordinate2D( latitude: southWestCoord.latitude, longitude: northEastCoord.longitude ) // 这里可以使用拿到的四个边角坐标做后续处理 print("东北: \(northEastCoord), 西北: \(northWestCoord), 东南: \(southEastCoord), 西南: \(southWestCoord)") } mapCamPos = .camera(MapCamera( centerCoordinate: location.coordinate, distance: distance, heading: locationMgr.headingDegrees )) }
关键说明
mapProxy.visibleRegion返回MKCoordinateRegion类型,包含了当前地图可视范围的东北和西南顶点坐标,这是系统直接提供的核心数据- 西北、东南两个顶点可以通过组合已有顶点的纬度和经度得到
- 注意
visibleRegion可能为nil(比如地图尚未完全加载时),所以必须用可选绑定做安全处理
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

