0

iOS アプリでは、route me lib を使用してオフライン モードで地図を表示しています。マップ上にいくつかのマーカーがあり、ドラッグ可能にしたいと考えています。私はこのコードを使用しました:

- (void) mapView:(RMMapView *)map didDragMarker:(HotspotMarker*)marker withEvent:(UIEvent *)event
{
    UITouch* touch = [[event allTouches] anyObject];
    if([[event allTouches] count] == 1 && touch.phase == UITouchPhaseMoved)
    {
        CGPoint position = [touch locationInView:[touch.view superview]];
        CGSize delta = CGSizeMake((position.x-(marker.position.x)),
                                  (position.y-(marker.position.y)));
        [marker moveBy: delta];
        [marker setProjectedLocation:[[_mapView.contents projection]
                                      latLongToPoint:[_mapView pixelToLatLong:marker.position]]];
    }
}

マウスをゆっくり動かすとマーカーはうまくドラッグしますが、マウスを少し速く動かすとトラックが失われます。

そこで、サンプルの「MapTestbedFlipMaps」プロジェクトを調べて実行しました...同じ問題に遭遇しました。

次に、ジェスチャー認識機能を使用して自分でやろうとしましたが、まだ問題があります。

何か案が ?

編集:問題はマーカーの画像のサイズに起因するものではありません.100x100の画像で試してみましたが、同じ結果が得られました.

4

1 に答える 1

0

これを試して:

- (void) mapView:(RMMapView *)map didDragMarker:(RMMarker *)marker withEvent:(UIEvent *)event
{

    CGPoint position = [[[event allTouches] anyObject] locationInView:mapView];

    CGRect rect = [marker bounds];

    [self.mapView.markerManager moveMarker:marker AtXY:CGPointMake(position.x,position.y +rect.size.height/3)];

}
于 2013-02-06T21:56:44.500 に答える