2012-07-10 90 views
0

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

当更改显示区域时,看起来我的坐标转换为CGPoint时是由Apple实现的floorf。这会导致一个非常紧张的外观,而不是一个光滑的外观。

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

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

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

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

因此,mapview将中心点的结果固定为对齐底层地图的所有像素。

+0

你在说哪个坐标?当你用'setRegion:animated:'改变地图区域时,不涉及CGPoint。 – Felix 2012-07-10 19:50:31

+0

为了清晰起见,我更新了我的问题。这有帮助吗? – Nico 2012-07-10 20:07:50

+0

在这种特殊情况下,你可以使用m_mapView.center – Felix 2012-07-10 20:53:44

回答

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];