[英]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.