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

オフセットを考慮し、クリッピングを回避するために、ビューを画面より大きくします。

ルートに沿って移動するポイントをシミュレートし、注釈を使用して配置してから、そのポイントを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];
于 2012-07-12T18:46:38.967 に答える