3

我根据这些文档设置了用户位置图标的样式:

https://docs.mapbox.com/ios/maps/examples/user-location-annotation/

它可以工作,但是虽然我使用了相机和音高,但它是在二维中显示的。我怎样才能让它处于相机的正确视角并且俯仰效果有效?

IMG_5069

我用这段代码添加了 MGLMapCamera:

func mapViewDidFinishLoadingMap(_ mapView: MGLMapView) {
       // Wait for the map to load before initiating the first camera movement.

       mapView.camera = MGLMapCamera(lookingAtCenter: mapView.centerCoordinate, altitude: 200, pitch: 50, heading: 0)
              
}

安卓没有像gps这样的相机选项模式吗? https://docs.mapbox.com/android/maps/examples/location-component-camera-options/

4

2 回答 2

0

我找到了解决方案。

据我所知,没有办法用一个选项来设置它。所以我手动解决了它:

首先,我创建一个图像:

private func setupLayers() {

     if arrow == nil {
           arrow = CALayer()
           let myImage = UIImage(named: "arrow")?.cgImage
           arrow.bounds = CGRect(x: 0, y: 0, width: size, height: size)
           
           arrow.contents = myImage
        
           layer.addSublayer(arrow)
     }
}

然后我使用 MGLRadiansFromDegrees 将弧度转换为度数,并在每次更新时转换图像:

override func update() {
       // Convert Optional to Double
       let camerapitch = Double(mapView?.camera.pitch ?? 0)
        
       let pitch: CGFloat = MGLRadiansFromDegrees(camerapitch)
        
       layer.transform = CATransform3DMakeRotation(pitch, 1, 0, 0)
}

在此处输入图像描述

于 2020-07-29T10:13:49.217 回答
0

如果您希望注释视图与地图视图一起倾斜,可以使用MGLAnnotationView:scalesWithViewingDistance属性。这决定了注释视图是否随着倾斜地图上视点和注释视图之间的距离的变化而增大和缩小。

当此属性的值为 YES 且地图倾斜时,注解视图在靠近视图顶部(靠近地平线)时显得更小,如果靠近视图底部(靠近视点)则显得更大)。

于 2020-07-24T11:47:11.723 回答