0

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

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

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

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

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

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

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

4

1 回答 1

0

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

我模拟一个沿路线移动的点并使用注释放置它,然后以每秒 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];
于 2012-07-12T18:46:38.967 回答