Aplikasi iPhone iOS6 Bagaimana cara memperbesar lokasi pengguna hanya sekali?

Kode di bawah ini adalah metode yang saya gunakan untuk memperbesar lokasi pengguna, tetapi kemudian menghentikannya agar tidak terus-menerus melakukan zoom ulang setelah pengguna memindahkan peta. Masalah dengan metode ini adalah ketika meminta izin untuk data lokasi pengguna di aplikasi, dan saya memilih ya, metode ini tidak melakukan apa pun. Saya harus meninggalkan halaman dan kembali sebelum dapat diperbesar dengan benar.

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([self.mapView showsUserLocation])
    {
        MKCoordinateRegion region;
        region.center = self.mapView.userLocation.coordinate;

        MKCoordinateSpan span;
        span.latitudeDelta  = .50; // Change these values to change the zoom
        span.longitudeDelta = .50;
        region.span = span;

        [self.mapView setRegion:region animated:YES];

        self.mapView.showsUserLocation = NO;}
}

Metode di atas harus memantau perubahan lokasi pengguna dan kemudian mengatur lokasi setelah ditemukan. Saya kemudian menetapkan kondisi dalam pernyataan if untuk menghentikannya -- jika tidak, peta akan terus berpindah kembali ke lokasi pengguna saat Anda memindahkan peta.


person Adama    schedule 20.02.2013    source sumber


Jawaban (1)


Bagi saya sepertinya self.mapView.showsUserLocation disetel ke FALSE ketika popup muncul karena belum mengetahui lokasi pengguna. Untuk mengatasi masalah ini, saya sarankan menggunakan variabel Anda sendiri saja. Buat boolean global di kelas ini dan gunakan sebagai ganti self.mapView.showsUserLocation. Selain itu, pastikan bahwa fungsi ini sebenarnya dipanggil setelah pengguna menyetujui popup. Apakah Anda sudah NSLogging?

person WolfLink    schedule 21.02.2013