Установка уровня масштабирования в MapKit Xcode - PullRequest
3 голосов
/ 23 марта 2011

Как мне установить уровень масштабирования моего Google MapKit в SDK? Как, например, я живу в Нью-Йорке, и я установил 4 координатных позиции в моем ProjectName-info.plist (Типы URL> Элемент 0> Схемы URL> Элемент 0), затем я настроил свой код в своем Файл подкласса UIViewController:

#import "GoogleMap.h"
#import "MyAnnotation.h"

@implementation GoogleMap

        - (void)viewDidLoad {
        [super viewDidLoad];

        variable1 = [[NSArray alloc] initWithContentsOfFile:[[NSBundle mainBundle] 
                                                             pathForResource:@"NewYorkAreas" 
                                                             ofType:@"plist"]];

        double minLat = [[variable1 valueForKeyPath:@"@min.latitude"] doubleValue];
        double maxLat = [[variable1 valueForKeyPath:@"@max.latitude"] doubleValue];
        double minLon = [[variable1 valueForKeyPath:@"@min.longitude"] doubleValue];
        double maxLon = [[variable1 valueForKeyPath:@"@max.longitude"] doubleValue];

        MKCoordinateRegion region;
        region.center.latitude = (maxLat + minLat) / 2.0;
        region.center.longitude = (maxLon + minLon) / 2.0;
        region.span.latitudeDelta = (maxLat - minLat) * 1.05;
        region.span.longitudeDelta = (maxLon - minLon) * 1.05;
        map.region = region;

        for (NSDictionary *newYorkAreasDict in variable1){
            MyAnnotation *annotation = [[MyAnnotation alloc] initWithDictionary:newYorkAreasDict];
            [map addAnnotation:annotation];
            [annotation release];
        }
    }

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{

        if (map.userLocation == annotation){
            return nil;
        }

        NSString *identifier = @"MY_IDENTIFIER";

        MKAnnotationView *annotationView = [map dequeueReusableAnnotationViewWithIdentifier:identifier];
        if (annotationView == nil){
            annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation 
                                                           reuseIdentifier:identifier] 
                              autorelease];
            annotationView.image = [UIImage imageNamed:@"logo.png"];
            annotationView.canShowCallout = YES;

            annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        }
        return annotationView;
    }

Так что это все, что у меня пока есть в моем коде, который отлично работает, когда я запускаю и отлаживаю приложение, и показывает мне расположение всех 4 областей, которые я установил с хорошим уровнем масштабирования, но теперь я хочу только 1 область, которую нужно установить, поэтому, когда я стираю остальные 3 области и когда запускаю ее и предоставляю мне только одну область, уровень масштабирования кажется очень близким к карте:

enter image description here

То есть, когда код исправлен (при условии, что кто-то помог мне исправить код для уровня масштабирования), при следующем запуске, когда я нажимаю «Найти нас на карте Google», уровень масштабирования начальной страницы моей карты Google Map должен выглядеть так: enter image description here

Так что, надеюсь, кто-нибудь поможет мне исправить этот уровень масштабирования, когда я начну открывать Google Map, спасибо!

(Насчет имен переменных в Нью-Йорке, забудь об этом, я не живу в Нью-Йорке, смеется)

1 Ответ

3 голосов
/ 23 марта 2011

Установить минимальное значение для latitudeDelta и longitudeDelta.Я бы сделал это примерно так:

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake((maxLat + minLat) / 2.0, (maxLon + minLon) / 2.0), 1000.0, 1000.0);
region.span.latitudeDelta = MAX(region.span.latitudeDelta, (maxLat - minLat) * 1.05);
region.span.longitudeDelta = MAX(region.span.longitudeDelta, (maxLon - minLon) * 1.05);

Первая строка создает область с прямоугольником размером 1 км на 1 км, а следующие строки увеличивают прямоугольник, если точки растянуты дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...