首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MKMapCamera更改标题以查看不同的地图中心

MKMapCamera更改标题以查看不同的地图中心
EN

Stack Overflow用户
提问于 2015-11-21 23:44:49
回答 1查看 962关注 0票数 0

我正在尝试使用MKMapViewMKMapCamera。到目前为止,我能够设置一切,并在3D模式/天桥配置地图。例如,我的地图中心是纽约帝国大厦,并使用构造函数设置了我的MKMapCamera:

代码语言:javascript
复制
public init(lookingAtCenterCoordinate centerCoordinate:
   CLLocationCoordinate2D, fromDistance distance: CLLocationDistance, 
   pitch: CGFloat, heading: CLLocationDirection)

所以我现在可以正确地看到在中心的帝国大厦。现在,我想要做的是改变我的MKMapCamera的“标题”,指向一个不同的方向:意思是没有位于帝国大厦的中心。

现在,如果我改变相机的标题,它实际上会移动相机,并且仍然保持帝国大厦在我的MKMapView的中心。

查看各种API,我无法在更改标题后找到用于“重新计算”新的MKMapView中心的API。

我想得到当前MKMapView的相反行为,在这里,我希望根据我指定的标题修复映射中心移动的MKMapCamera

实现这一目标的正确途径是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-17 10:24:10

当您更改MKMapCamera对象的标题,该对象正在查看地图的中心,您正在改变相机围绕该中心点的旋转角度。想象一下,摄像机是用一根绳子绑在中心点上的。照相机只能绕着中心点移动一个圆圈。摄像机围绕中心点移动的距离由摄像机的航向控制。在您的例子中,中心点是帝国大厦,因此更改相机的标题将使相机在帝国大厦周围绕成一个圆圈,同时保持相机面向大楼。

如果我正确理解您的要求,您希望保持您的相机位置固定,并改变位置显示在地图的中心使用一个标题从相机。要实现这一点,您需要为地图计算一个新的中心坐标。新的中心坐标将是以你的相机为中心的假想圆周上的一个点。圆的半径是地图中心点与照相机之间的距离。

此计算使用相机的位置、摄像机的航向和距相机的距离来计算将成为地图新中心的纬度和经度坐标。GreatCircle是一个Objective库,它作为执行所需计算的CLLocation的扩展提供了locationWithBearing:distance:方法:

代码语言:javascript
复制
- (nonnull CLLocation *)locationWithBearing:(CLLocationDirection)bearing
                                   distance:(CLLocationDistance)distance;

因此,考虑到相机c的位置、航向(方位) h (以度计)和距离d (以米为单位),地图m的新中心将是(在Swift中):

代码语言:javascript
复制
let m = c.locationWithBearing(h, distance: d)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33849988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档