0

私の地図アプリでは、ユーザーが検索バーに住所を入力すると、その場所が赤いピンで表示されます。ピンが地図上に配置される前に、コード内でユーザーがカスタム タイトルとサブタイトルを入力できるようにすることはできますか? 吹き出しにタイトルとサブタイトルが表示されます。これはどのように行われますか?現在、ピンのタイトルはすべて「My Place」です。

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar

{

    if (!self.geocoder)
    {
        self.geocoder = [[CLGeocoder alloc] init];
    }

    NSString *address = [NSString stringWithFormat:@"%@", self.searchBar.text];

    [self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
        if ([placemarks count] > 0)
        {
            CLPlacemark *placemark = [placemarks objectAtIndex:0];
            CLLocation *location = placemark.location;
            CLLocationCoordinate2D coordinate = location.coordinate;

            NSLog (@"%f %f", coordinate.latitude, coordinate.longitude);

            MKCoordinateRegion region;
            MKCoordinateSpan span;
            span.latitudeDelta = 0.01;
            span.longitudeDelta = 0.01;
            region.span = span;
            region.center = coordinate;

            MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
            [annotation setCoordinate:coordinate];
            [annotation setTitle:@"My Place"];
            [[self mapView] addAnnotation:annotation];

            [self.mapView setRegion:region animated:TRUE];
            [self.mapView regionThatFits:region];

            [self.searchBar resignFirstResponder];
            self.searchBar.text = @"";

        }
    }];

}

また、すべてのピンを NSUserDefault に保存して、アプリの再起動時にピンが表示されるようにするにはどうすればよいですか? これは機能しますか、それとも 1 つのピンしか節約できませんか?

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
                [defaults setDouble:coordinate.latitude forKey:allPins_latitude];
                [defaults setDouble:coordinate.longitude forKey:allPins_longitude];
                [defaults setBool:YES forKey:allPins_coordinates];
                [defaults synchronize];

助けていただければ幸いです。ありがとう!

4

3 に答える 3