Mengatur tingkat zoom di MapKit Xcode

Bagaimana cara mengatur tingkat zoom Google MapKit saya di SDK? Misalnya, saya tinggal di New York, dan saya sudah menyiapkan 4 posisi koordinat di ProjectName-info.plist saya (Jenis URL > Item 0 > Skema URL > Item 0), lalu saya sudah menyiapkan kode saya di File subkelas 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;
    }

Jadi hanya ini yang saya miliki untuk saat ini dalam kode saya, yang berfungsi dengan sempurna ketika saya menjalankan dan men-debug aplikasi, dan menunjukkan lokasi keempat area yang saya atur pada tingkat zoom yang baik, tetapi sekarang saya hanya ingin 1 area untuk disetel , jadi ketika saya menghapus 3 area lainnya dan ketika menjalankannya dan hanya memberi saya satu area, tingkat zoomnya tampak sangat dekat dengan peta:

masukkan deskripsi gambar di sini

Jadi ketika kode sudah diperbaiki (dengan asumsi seseorang membantu saya memperbaiki kode untuk tingkat zoom), saat saya menjalankannya lagi, ketika saya mengklik "Temukan kami di Google Map", tingkat zoom halaman pembuka Google Map saya akan terlihat seperti ini: masukkan deskripsi gambar di sini

Jadi ya semoga ada yang bisa membantu saya memperbaiki tingkat zoom ini ketika saya mulai membuka Google Map, terima kasih!

(Tentang nama variabel New York, lupakan saja, saya tidak tinggal di New York haha)


person PatrickGamboa    schedule 22.03.2011    source sumber


Jawaban (1)


Tetapkan nilai minimum untuk garis lintangDelta dan garis bujurDelta. Saya akan melakukannya seperti ini:

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);

Garis pertama membentuk suatu daerah berbentuk persegi panjang berukuran 1 km kali 1 km, dan garis berikutnya memperbesar persegi panjang tersebut jika titik-titiknya tersebar lebih jauh.

person Anomie    schedule 23.03.2011
comment
hei terima kasih atas bantuan Anda, ketika saya menjalankannya, itu memberi saya _CLLocationCoordinate2DMake, direferensikan dari: -[GoogleMap viewDidLoad] di GoogleMap.o simbol tidak ditemukan kumpulkan2: ld mengembalikan 1 status keluar Mungkin Anda bisa membantu saya dengan kesalahan ini ? terima kasih - person PatrickGamboa; 23.03.2011
comment
Anda memerlukan kerangka Lokasi Inti untuk fungsi itu. Jika Anda tidak ingin menyertakan framework hanya untuk itu, coba ganti CLLocationCoordinate2DMake((maxLat + minLat) / 2.0, (maxLon + minLon) / 2.0) dengan (CLLocationCoordinate2D){ (maxLat + minLat) / 2.0, (maxLon + minLon) / 2.0 }. - person Anomie; 23.03.2011
comment
Wow, terima kasih banyak! itu benar-benar berhasil! Sekarang saya dapat menambahkan lebih banyak hal sekarang! Ngomong-ngomong, saya punya satu pertanyaan lagi, ketika pengguna berada di tempat lain di area tertentu, dan ketika mereka mengetuk tombol google saya untuk membuka halaman google saya, saya ingin rute diplot antara lokasi pengguna saat ini dan lokasi bisnis saya, bukan? mungkin jika Anda dapat membantu saya dengan itu? Terima kasih lagi! - person PatrickGamboa; 23.03.2011
comment
Itu akan menjadi pertanyaan terpisah. - person Anomie; 23.03.2011
comment
Pada awalnya ini berfungsi menggunakan contoh Anda, tetapi sekarang wilayahnya berubah tetapi tidak memperbesar wilayah itu - person ; 05.07.2011