2013-02-14 12 views
6

Starając się znaleźć sposób na powiększenie mapy i wyśrodkuj pinezkę adnotacji. Pin spada, ale mapa ładuje ocean. Kod znajduje się poniżej.Próbujesz wyśrodkować mapę na sworzniu (MKMapView)

- (void) connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    [self setString]; 

    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil]; 
    NSDictionary *location = [dic objectForKey:@"location"]; 
    NSDictionary *coordinate = [location objectForKey:@"coordinate"]; 
    NSString *lat = [coordinate objectForKey:@"latitude"]; 
    NSString *lon = [coordinate objectForKey:@"longitude"]; 

    for (NSDictionary *diction in coordinate) 
    { 
    [array addObject:lat]; 
    [array addObject:lon]; 
    } 
    { 
    CLLocationCoordinate2D track; 
    track.latitude = [lat doubleValue]; 
    track.longitude = [lon doubleValue]; 

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Title of Place Here" andCoordinate:track]; 

    [self.mapView addAnnotation:newAnnotation]; 
    } 
} 

2ND pytanie BARDZO DOTYCZY:

Po wdrożeniu odpowiedź na powyższe pytanie, mam od zmodyfikowane mój kod. Teraz mam współrzędne zbliżające się do mojego MKMapView z poprzedniego widoku, więc nie muszę zawracać sobie głowy dwukrotnym wywołaniem API, a drugi jest w MKMapView. Obecnie w moim ViewWillAppear Mam następujący, i znowu jestem występuje problem gdzie widok nie będzie centrum i zoom na PIN:

if ([self.stringToDisplay isEqualToString: @"Firehouse Gallery"]) 
{ 
    UIImage *img = [UIImage imageNamed:@"firehouse.jpg"]; 
    [imageView setImage:img]; 

    CLLocationCoordinate2D track; 
    track.latitude = [lat doubleValue]; 
    track.longitude = [lon doubleValue]; 

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

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Firehouse Gallery" andCoordinate:track]; 

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

Odpowiedź jest głęboko doceniane, jak nie mogę powiedzieć, co jeszcze należy zrobić . Obciążenia pin na odpowiednim układzie współrzędnych, nie tylko centrum/zoom ...

+0

@dthien może być w stanie powiedzieć, jak mogę rozwiązać ten jeden powyżej? Dziękuję za Twój czas. – Greg

Odpowiedz

20

Spróbuj tego:

{ 
    CLLocationCoordinate2D track; 
    track.latitude = [lat doubleValue]; 
    track.longitude = [lon doubleValue]; 

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

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Title of Place Here" andCoordinate:track]; 

    [self.mapView addAnnotation:newAnnotation]; 
    [self.mapView setRegion:region animated:TRUE]; 
    [self.mapView regionThatFits:region]; 
} 
3
- (void)zoomMapViewToFitAnnotationsWithExtraZoomToAdjust:(double)extraZoom 
{ 
    if ([self.annotations count] == 0) return; 

    int i = 0; 
    MKMapPoint points[[self.annotations count]]; 

    for (id<MKAnnotation> annotation in [self annotations]) 
    { 
     points[i++] = MKMapPointForCoordinate(annotation.coordinate); 
    } 

    MKPolygon *poly = [MKPolygon polygonWithPoints:points count:i]; 

    MKCoordinateRegion r = MKCoordinateRegionForMapRect([poly boundingMapRect]); 
    r.span.latitudeDelta += extraZoom; 
    r.span.longitudeDelta += extraZoom; 

    [self setRegion: r animated:YES]; 
} 
Powiązane problemy