繁体   English   中英

在MKMapView中设置当前位置图标的下方

[英]set current location icon lower side in MKMapView

我想在地图中显示我当前位置较低(iOS 6和iOS 7),因为下面的屏幕截图用户可以看到进一步的视图[google默认应用程序与谷歌地图]。

在此输入图像描述

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

因此,屏幕的最大部分用于显示背后的内容,而它却无法向前看。

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

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

mapView.userTrackingMode = MKUserTrackingModeFollow;

并尝试以下方法

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

不要设置userTrackingMode或地图的centerCoordinate

相反,您可以尝试将MKMapCamera指向稍微 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];

在模拟器中使用“City Bicycle Ride”,“City Run”或“Freeway Drive”进行尝试。
您可能需要调整一些数字以获得所需的视角。

MKMapView上设置layoutMargins就可以了。

根据文档,

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

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

要将摄像机的居中点偏移到MKMapView下半部分中心,只需将UIEdgeInsets.top设置为MKMapView'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
}

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

MapViewHeight = (WindowHeight - desiredOffsetFromBottom)*2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM