7

注釈の準備はできていますが、コードでドラッグ可能にする方法を見つけようとしています:

-(IBAction) updateLocation:(id)sender{

    MKCoordinateRegion newRegion;

    newRegion.center.latitude = mapView.userLocation.location.coordinate.latitude;
    newRegion.center.longitude = mapView.userLocation.location.coordinate.longitude;

    newRegion.span.latitudeDelta = 0.0004f;
    newRegion.span.longitudeDelta = 0.0004f;

    [mapView setRegion: newRegion animated: YES];


    CLLocationCoordinate2D coordinate;
    coordinate.latitude = mapView.userLocation.location.coordinate.latitude;
    coordinate.longitude = mapView.userLocation.location.coordinate.longitude;

    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];

    [annotation setCoordinate: coordinate];
    [annotation setTitle: @"Your Car is parked here"];
    [annotation setSubtitle: @"Come here for pepsi"];


    [mapView addAnnotation: annotation];
    [mapView setZoomEnabled: YES];
    [mapView setScrollEnabled: YES];
}

前もって感謝します!

4

1 に答える 1

16

注釈をドラッグ可能にするには、注釈ビューの draggableプロパティをに設定しYESます。

これは通常、viewForAnnotationデリゲート メソッドで行われます。

例えば:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    static NSString *reuseId = @"pin";
    MKPinAnnotationView *pav = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseId];
    if (pav == nil)
    {
        pav = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseId];
        pav.draggable = YES;
        pav.canShowCallout = YES;
    }
    else
    {
        pav.annotation = annotation;
    }

    return pav;
}


ユーザーが注釈のドラッグ アンド ドロップを停止したときに処理する必要がある場合は、次を参照してください:
IOS で MKAnnotationView のドラッグ アンド ドロップを管理する方法は?


さらに、注釈オブジェクト ( を実装するオブジェクトMKAnnotation) には、設定可能なcoordinateプロパティが必要です。MKPointAnnotation実装するクラスを使用しているsetCoordinateため、その部分はすでに処理されています。

于 2012-08-13T03:25:34.803 に答える