ios - 如何偏移地图中心
问题描述
我有一个带有地图预览的应用程序,它在点击它后会全屏显示动画:
由于mapView底部的半透明条,我设法mapView.setVisibleMapRect(mapView.visibleMapRect, edgePadding: UIEdgeInsets(top: 0, left: 0, bottom: 50, right: 0), animated: false)
在地图完成后通过调用来偏移地图的中心:
mapView.showsUserLocation = true
let regionRadius: CLLocationDistance = 700
let region = MKCoordinateRegion(center: location.coordinate, latitudinalMeters: regionRadius, longitudinalMeters: regionRadius)
mapView.setRegion(region, animated: true)
现在我想扩大mapView
以填满整个屏幕。好消息是地图缩放和位置保持不变,只是框架扩展,完全符合预期(userPosition 仍然居中,但不可见,因为它就在半透明面板顶部的后面,只需比较地图):
不好的是,我希望地图中心位于蓝色框和半透明面板之间。问题是,当我尝试偏移地图以在地图新可见区域的中心显示用户位置时。我需要setVisibleMapRect
再次使用该功能(据我了解)来设置新的 edgePadding。但是我测试的所有内容都以地图放大或缩小结束,当我在展开和折叠状态之间跳转时,我越来越缩小。
所以我搜索了一种方法来稍微偏移地图以正确显示用户位置,mapView.setEdgePadding(UIEdgeInsets(...), animated: true)
或者我需要一种MKMapRect
根据当前缩放级别和新框架计算正确的方法,所以我可以在setVisibleMapRect
不更改地图缩放的情况下使用该功能等级。
我想要的结果:
解决方案
如果您希望用户更加动态地居中,请考虑
mapView.setUserTrackingMode(.followWithHeading, animated: animated)
或者
mapView.setUserTrackingMode(.follow, animated: animated)
这可以改变缩放级别。
如果您只想将用户位置的中心设置一次,请尝试
var region = mapView.region
region.center = userLocation
mapView.setRegion(region, animated: true)
这不应该改变缩放级别
推荐阅读
- c# - c# svn命令搜索文件
- banner - 如何使用 JS 制作横幅广告?
- deep-learning - 平衡数据集的过采样
- python-3.x - 如何在 PyQt5 中的文件对话框后启动表格的交互式视图?
- python - 如何重塑张量,例如 [?,64,?,?] 到 [?,?,?,64]
- powerbi-desktop - Power BI 查询问题
- java - 针对 MVC 模式规则的 JavaFX 代码优化
- kotlin - Room.databaseBuilder() 即使从 androidx.room.Room 导入后也找不到 Room 依赖项
- algorithm - 可逆短密码序列
- java - Android 我选择的图像旋转了