3

我想根据下面的屏幕截图在地图(iOS 6 和 iOS 7)的下方显示我的当前位置,以便用户可以看到进一步的视图 [带有谷歌地图的谷歌默认应用程序]。

在此处输入图像描述

现在,光标显示在视图中心,如下图所示 [my app with apple map] 。在此处输入图像描述

因此屏幕的最大部分用于显示后面的内容,而不能向前看很远。

在第一张图片和第二张图片中,我与谷歌导航进行了比较,它在屏幕上显示的当前位置要低得多,旋转角度大致相同。我添加了一些箭头来显示我在说什么。

我尝试了下面的设置中心代码,因为我找不到设置得更低。

mapView.userTrackingMode = MKUserTrackingModeFollow;

并尝试以下方法

[mapView setCenterCoordinate:currentLocation.coordinate Animation:YES];

4

3 回答 3

3

设置效果很好layoutMarginsMKMapView

根据文档,

在视图中布局内容时使用的默认间距。

在 iOS 11 及更高版本中,使用 directionalLayoutMargins 属性而不是此属性来指定布局边距。

要将相机的中心点偏移到下半部分的中心MKMapView,只需设置UIEdgeInsets.topMKMapView's高度的一半。

class MapViewController: UIViewController {
@IBOutlet var mapView: MKMapView!

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    let layoutMargins = UIEdgeInsets(top: self.mapView.bounds.size.height / 2, left: 0, bottom: 0, right: 0)
    self.mapView.layoutMargins = layoutMargins
}
于 2018-07-10T11:19:41.990 回答
2

不要设置userTrackingMode或地图的centerCoordinate.

相反,您可以尝试将 指向用户前进方向稍前的MKMapCamera坐标。这将自动将用户的位置放在屏幕下方。

计算坐标“前方一小段距离”当前未内置到 iOS SDK 中,因此您必须手动计算。

一种方法是使用如下所示的方法:
计算新坐标 x 米和距离一个坐标的 y 度

使用该coordinateFromCoord:atDistanceKm:atBearingDegrees:答案中的方法,您可以像这样设置相机:

MKMapCamera *cam = [MKMapCamera camera];

CLLocationCoordinate2D coordinateAhead = 
    [self coordinateFromCoord:currentLocation.coordinate 
                 atDistanceKm:0.15 
             atBearingDegrees:currentLocation.course];
//adjust distance (0.15 km) as needed

cam.centerCoordinate = coordinateAhead;

cam.heading = currentLocation.course;

cam.pitch = 80; //adjust pitch as needed (0=look straight down)

cam.altitude = 100; //adjust as needed (meters)

[mapView setCamera:cam animated:YES];

在模拟器中尝试“城市自行车骑行”、“城市跑步”或“高速公路驾驶”。
您可能需要调整一些数字以获得您想要的视角。

于 2014-07-01T13:34:13.940 回答
0

一个应该可行的简单解决方法是使 MKMapView 框架大于设备的屏幕。就像是:

MapViewHeight = (WindowHeight - desiredOffsetFromBottom)*2
于 2014-07-01T11:52:58.423 回答