2

MKMapViewにMKAnnotationViewを追加しました。長押しすると、持ち上げて別の場所に移動できるといいのですが。

方法?特別な感謝!

4

1 に答える 1

3

iOS4.0以降の場合

AppleのLocationAwarenessGuideから>注釈ビューをドラッグ可能としてマークする

ドラッグの最小限のサポートを実装するには、次のことを行う必要があります。

  • 注釈オブジェクトで、setCoordinate:メソッドを実装して、マップビューが注釈の座標点を更新できるようにします。

  • 注釈ビューを作成するときは、ドラッグ可能なプロパティをYESに設定します。

setCoordinateの実装:

#import <MapKit/MapKit.h>
@interface mapAnnotation : NSObject<MKAnnotation> {
    double latitude, longitude; 
}
@end

@implementation mapAnnotation
- (void)setCoordinate:(CLLocationCoordinate2D)coordinate{
    latitude = coordinate.latitude;
    longitude = coordinate.longitude;
}

-(CLLocationCoordinate2D)coordinate {
    CLLocationCoordinate2D coordinate = {latitude,longitude};
    return coordinate;
}
// ...
@end

ビューコントローラで注釈ビューを作成する:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    static NSString * const identifier = "identifier";
    MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
    if (pinView ==nil) {
        pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:identifier];
        pinView.animatesDrop = YES;
        pinView.draggable = YES;    
    }
    return pinView;
}

iOSバージョンの場合

ユーザーのタッチを追跡し、それに応じてピンビューを移動します。このページの下部にあるDDAnnotationViewを見てください:http://digdog.tumblr.com/post/252784277/mapkit-annotation-drag-and-drop-with-callout-info

ユーザーがドラッグを停止したら、ビューの位置をマップ座標に変換し、注釈座標を変更します。ピンのアニメーションをいくつか投げます。

実用的な例を次に示します。https ://github.com/digdog/MapKitDragAndDropプロジェクトにDDAnnotationViewクラスとDDAnnotationクラスを追加し、この行の下にあるMKMapViewDelegateメソッドを使用してみてください。

于 2012-10-23T15:40:51.540 に答える