重新定位时,Mapbox默认的compassView会产生奇怪的结果

时间:2018-03-06 12:20:41

标签: ios swift xcode mapbox

我有一种情况,我必须将地图框指南针视图重新定位到不同的位置。当我旋转地图时,compassView正在旋转,其中一些其他点作为其(compassView)轴,并给我一个奇怪的结果。附上截图,黑色mapBox默认罗盘图标正在旋转,参考截图。这是一个MapBox sdk错误吗?如果是的话,有什么工作吗?并调整?我很迷惑。需要专家意见。提前谢谢。

First Image Second Image Third Image

3 个答案:

答案 0 :(得分:2)

嘿,我找到了另一种方法,我会在地图框中得到相同的指南针结果。我已经放了一个按钮然后

func mapViewRegionIsChanging(_ mapView: MGLMapView) {
    compassViewUpdate(direction: Double(bearing))

在compassViewUpdate方法中

func compassViewUpdate(direction:Double) {

    self.compassButton.transform = CGAffineTransform(rotationAngle: CGFloat(-direction.degreesToRadians))
}

@Sarang这是一个解决方法。快乐的编码。

答案 1 :(得分:0)

尝试更改罗盘视图。中心,而不是更改其原点或框架。我猜它大约有40像素宽x高,我使用以下命令更改为左下角:

chainr1

应该可以!

答案 2 :(得分:0)

Mapbox iOS SDK中提供的一种内置方法。使用这些方法 移动指南针将避免inv_Sigma = solve (Sigma [[1]]) inv_Lambda_plus_Delta = solve (Delta) Delta_i = solve (inv_Sigma + inv_Lambda_plus_Delta) mu_i = Delta_i %*% (inv_Sigma %*% O [, 1] + inv_Lambda_plus_Delta %*% mu) if (n > 1) { for (i in seq (2, n)) { inv_Sigma = solve (Sigma [[i]]) inv_Lambda_plus_Delta = solve (Lambda + Delta_i) Delta_i = solve (inv_Sigma + inv_Lambda_plus_Delta) mu_i = Delta_i %*% (inv_Sigma %*% O [, i] + inv_Lambda_plus_Delta %*% mu_i) } } .frame引起的失真 变化。

通常更改CompassView的位置

.center

通常使用mapView.compassViewPosition = .bottomLeft mapView.compassViewPosition = .bottomRight mapView.compassViewPosition = .topLeft mapView.compassViewPosition = .topRight 将指南针放在您想要的位置 屏幕。

微调CompassView的位置

compassViewPosition

默认x,y = 8,8

边界位于视图边界的外部/沿边界。所以对于mapView.compassViewMargins = CGPoint(x: 64, y: 16) 指南针视图将向右移56,向右移8,而.bottomLeft 指南针将向左移动56,向下移动8。