【问题标题】:ios MapKit, following a pathios MapKit,遵循路径
【发布时间】:2012-07-10 08:27:46
【问题描述】:

我的地图上有一个路径渲染。我有一系列航路点,我正在模拟通过它们的运动。

当更改显示区域时,我的坐标在转换为 CGPoint 时似乎是 Apple 实现的 floorf。这会导致外观非常紧张,而不是平滑。

有没有办法解决这个问题?

[m_mapView setRegion: MKCoordinateRegionMake(coord, MKCoordinateSpanMake(0, 0))];

然后地图会尝试以这个给定点为中心。但是,该点可能不是像素对齐的,可以通过以下函数查看。

CGPoint point = [m_mapView convertCoordinate:coord toPointToView:m_mapView];

因此,地图视图将中心点的结果置于底层,以对齐底层地图的所有像素。

【问题讨论】:

  • 你说的是哪个坐标?当您使用 setRegion:animated: 更改地图区域时,不涉及 CGPoint。
  • 为了清楚起见,我更新了我的问题。这有帮助吗?
  • 在这种特殊情况下,您可以使用 m_mapView.center
  • 您是说CGPoint point,例如,等于{122.45, 201.68},并且以{122, 201}为中心,这还不够好?而且,您如何选择重新集中在哪些点上?通常,当我想到“航路点”时,那些是不常见的兴趣点。例如,发生转弯的地方。您是否正在对自己进行插值以沿路径使用许多“航路点”,然后真的频繁地重新定位地图?
  • 你应该使用覆盖和/或注释来显示路径,那么你不需要convertCoordinate:toPointToView:

标签: iphone ios mapkit


【解决方案1】:

我使视图大于屏幕以解决偏移并避免剪裁。

我模拟一个沿路线移动的点,并使用注释放置它,然后以每秒 30 帧的速度以该点为中心。

假设坐标是移动点的位置。

[m_mapView setCenterCoordinate: coord];

CGPoint p = [m_mapView convertCoordinate:m_mapView.centerCoordinate toPointToView:m_mapView];
CGPoint p1 = [m_mapView convertCoordinate:coord toPointToView:m_mapView];

CGPoint offset = CGPointMake(p.x - p1.x, p.y - p1.y);
CGRect frame = CGRectInset(CGRectMake(0.0f, 0.0f, 1024.0f, 1024.0f), -50.0f, -50.0f);
frame.origin.x+= offset.x;
frame.origin.y+= offset.y;
[m_mapView setFrame: frame];

【讨论】:

    猜你喜欢
    • 2016-03-18
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2020-09-24
    • 2013-02-26
    • 2019-07-27
    相关资源
    最近更新 更多