0

今日、この質問を数回「グーグル」しましたが、うまくいきませんでした。lat/Long メソッドを使用するのではなく、住所から Mapview で注釈を作成できるかどうかを知りたいです。私の現在のコードは以下です。

//1. Create a coordinate for use with the annotation
    CLLocationCoordinate2D Sharon;
    Sharon.latitude = 38.952223;
    Sharon.longitude = -77.193646;

    Annotation *myAnnotation = [Annotation alloc];
    myAnnotation.coordinate = Sharon;
    myAnnotation.title = @"Sharon Lodge #327";
    myAnnotation.subtitle = @"McLean, VA";
4

2 に答える 2

1

googleapiまたはCLGeocoderを使用してアドレスから緯度を取得できます

グーグルAPI

リンク1 リンク2

CLGeocoder

-(id)getAnnotationAryFromAddress
{

        CLGeocoder *geocoder2 = [[CLGeocoder alloc] init];

    NSString *addressString = "string contain address, city, state and zip";

    [geocoder2 geocodeAddressString:addressString
                  completionHandler:^(NSArray *placemarks, NSError *error) {

                      if (error) {
                          //NSLog(@"Geocode failed with error: %@", error);
                          return;
                      }

                      if (placemarks && placemarks.count > 0)
                      {                          
                          CLPlacemark *placemark = [placemarks objectAtIndex:0];

                          CLLocation *location = placemark.location;

                          RegionAnnotation *annotation = [[RegionAnnotation alloc] init];
                          CLLocationCoordinate2D theCoordinate1;
                          theCoordinate1 = location.coordinate;

                          annotation.title = @"Title";

                          annotation.subtitle = @"SubTitle";

                          annotation.tag = i;

                          annotation.coordinate = theCoordinate1;

                          [self.mapView addAnnotation:annotation];
                      }
                  }];
    }


    return self;
}  
于 2012-11-26T11:52:57.647 に答える
1

このようにしてみて、

NSString *location = "some address, state, and zip";
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
            [geocoder geocodeAddressString:location 
                 completionHandler:^(NSArray* placemarks, NSError* error){
                     if (placemarks && placemarks.count > 0) {
                         CLPlacemark *topResult = [placemarks objectAtIndex:0];
                         MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];

                         MKCoordinateRegion region = self.mapView.region;
                         region.center = placemark.region.center;
                         region.span.longitudeDelta /= 8.0;
                         region.span.latitudeDelta /= 8.0;

                         [self.mapView setRegion:region animated:YES];
                         [self.mapView addAnnotation:placemark];
                     }

             ];

注釈のタイトルとサブタイトルについては、

CLPlacemark *topResult = [placemarks objectAtIndex:0];

// Create an MLPlacemark

MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];

// Create an editable PointAnnotation, using placemark's coordinates, and set your own title/subtitle
MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
point.coordinate = placemark.coordinate;
point.title = @"Sample Location";
point.subtitle = @"Sample Subtitle";


// Set your region using placemark (not point)          
MKCoordinateRegion region = self.mapView.region;
region.center = placemark.region.center;
region.span.longitudeDelta /= 8.0;
region.span.latitudeDelta /= 8.0;

// Add point (not placemark) to the mapView                                              
[self.mapView setRegion:region animated:YES];
[self.mapView addAnnotation:point];

// Select the PointAnnotation programatically
[self.mapView selectAnnotation:point animated:NO];
于 2012-11-26T04:18:04.597 に答える