ios - 在 IOS 13 中,当 ViewController 未推送时,Google Map 相机位置未显示准确。附上两个屏幕截图
问题描述
我正在开发出租车应用程序,我想在其中展示并显示三个标记,但相机位置始终位于左上角,我必须滚动地图视图才能看到标记。已经尝试过这些东西。
- 将我的代码放入 viewwillappear & viewdidappear 并将其从 viewdidload 中删除。
- 2 秒后将我所有的代码放入 DispatchQueue
- 使用动画和增加/减少时间。
附加示例代码只是为了显示一个标记,当视图控制器被推送到导航堆栈时,它可以正常工作。
func testCode() {
mapView.layoutIfNeeded()
DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
let camera = GMSCameraPosition(latitude: 31.326137, longitude: 75.575520, zoom: 10)
self.pickupMarker = GMSMarker()
self.addMarkerOnMap(lat: "31.326137", long: "75.575520", img: #imageLiteral(resourceName: "drop-icon"), mapVieww: self.mapView,marker: &(self.pickupMarker), title: "Drop at", snippet:"Hello")
CATransaction.begin()
CATransaction.setValue(Int(1), forKey: kCATransactionAnimationDuration)
self.mapView.animate(to: camera)
CATransaction.commit()
})
}
解决方案
我做了四件事来解决这个问题。
- 首先在我想要我的地图视图的地方拿一个容器,在故事板中,然后在课堂上制作一个插座。
- 删除 mapview 出口并从情节提要中删除 mapview UIVIew。
- 以编程方式将 GMSMapView 添加为容器中的子视图(我想在其中显示地图)。
- 在 Dispatchqueue 的 viewdidappear 方法中添加代码,现在一切正常。
推荐阅读
- python - 检查网络上设备的可用性
- node.js - 如何在 DynamoDB 中使用 getItem?
- python - ValueError:时间数据 '00:01:29:06' 与格式 '%d:%H:%M:%S' 不匹配
- bazel - 有没有办法改进 starlark 的 unittest 错误报告?
- flutter - 颤振 | 如何设计底部标签,如下图所示
- python - 从参考数据框中计算和累加数据
- python - 在嵌套 keras 模型之间传递权重的方法
- python - 如何在 Python 中提高时间或内存结果?
- data-structures - 完全二叉树与几乎完全二叉树
- python - python中的导入问题