2013-03-13 4 views
1

У меня есть пользовательский вид выноски аннотаций в моем приложении. Я хочу, чтобы mapview автоматически настраивался, чтобы вид вызывного аннотации всегда отображался в пределах видимой области. Теперь он отображается, как показано на изображении. любое решение? Пользовательский вид выноски аннотаций не отображается правильно

+0

какие методы csutom крикнуть Youu используют .. Есть у использования этих CalloutMapAnnotationView.h – 08442

+0

yes.I я использую то же самое. –

+0

, тогда u должен отрегулировать смещение mapview в этом классе в соответствии с вашим требованием shuchn, что он всегда будет в середине, потому что вы показываете небольшую часть в mapview, которая есть .. check – 08442

ответ

0

This is my answer for create Annotation.

вызова следующий метод для отображения правильно все аннотации в MapView. (Этот метод вызова после того, как создать аннотацию)

[self zoomToFitMapAnnotations:self.mapView]; 

Код для выше метода

-(void)zoomToFitMapAnnotations:(MKMapView*)mapView 
{ 
    if([mapView.annotations count] == 0) 
     return; 

    CLLocationCoordinate2D topLeftCoord; 
    topLeftCoord.latitude = -90; 
    topLeftCoord.longitude = 180; 

    CLLocationCoordinate2D bottomRightCoord; 
    bottomRightCoord.latitude = 90; 
    bottomRightCoord.longitude = -180; 

    for(DDAnnotation* annotation in mapView.annotations) 
    { 
     topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude); 
     topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude); 

     bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude); 
     bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude); 

    } 

    NSLog(@"A%f, B%f, C%f, D%f,", topLeftCoord.latitude, topLeftCoord.longitude, bottomRightCoord.latitude, bottomRightCoord.longitude); 

    MKCoordinateRegion region; 
    region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; 
    region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5; 
    region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * 1.1; 
    region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * 1.1; 

    region = [mapView regionThatFits:region]; 
    [mapView setRegion:region animated:YES]; 
} 
+0

Спасибо iPatel, но моя проблема не в том, что вы предложили решение для.my все аннотации отображаются корректно в mapview.but проблема в том, что когда я нажимаю на любой вывод, открывается окно вызова. Моя проблема заключается в том, что он не настраивается автоматически, чтобы правильно отображаться на карте .please см. изображение, которое я приложил для уточнения. –

Смежные вопросы