Как установить положение метки в MKMapView?


MKMapView показать pin-код в центре mapView, я хочу расположить pin-код выше центра. Как мне это сделать?

Вот мой код

- (void) location
{
    MKCoordinateRegion region;  
    MKCoordinateSpan span;  
    span.latitudeDelta = 0.1162;  
    span.longitudeDelta = 0.1160;  

    CLLocationCoordinate2D location;  
    location.latitude = 65.494806;  
    location.longitude = -23.577569;  
    region.span=span;  
    region.center=location;  

    PlaceMark *add_Annotation = [[[PlaceMark alloc] initWithCoordinate:location] autorelease];
    [add_Annotation setTitle:@"myTitle"];  
    [add_Annotation setSubTitle:@"myAddress"];  
    [mapView addAnnotation:add_Annotation]; 

    [mapView setRegion:region animated:TRUE];  
    [mapView regionThatFits:region];  
}
1 2

1 ответ:

Если вы хотите сохранить булавку в этих координатах, но центрировать карту ниже булавки, чтобы булавка была немного выше центра, сдвиньте center из region на долю широтного диапазона.

Вместо этого:

region.center=location;

Сделайте так:

region.center = CLLocationCoordinate2DMake(
                    location.latitude - (span.latitudeDelta/5.0), 
                    location.longitude);

Увеличьте / уменьшите делитель, чтобы уменьшить/увеличить смещение.


Кроме того, строка [mapView regionThatFits:region]; не нужна-вы можете удалить ее.
Во-первых, setRegion уже делает regionThatFits сам, а во-вторых, regionThatFits возвращает a значение, но код не обрабатывает возвращаемое значение.