แอพ iOS6 iPhone จะซูมไปยังตำแหน่งผู้ใช้เพียงครั้งเดียวได้อย่างไร

โค้ดด้านล่างเป็นวิธีที่ฉันใช้เพื่อซูมเข้าไปในตำแหน่งของผู้ใช้ แต่จากนั้นให้หยุดไม่ให้ซูมอีกครั้งอย่างต่อเนื่องเมื่อผู้ใช้ย้ายแผนที่ ปัญหาของวิธีนี้คือเมื่อมันขออนุญาตข้อมูลตำแหน่งผู้ใช้ในแอป และฉันเลือกใช่ มันไม่ทำอะไรเลย ต้องออกจากเพจแล้วกลับมาก่อนจะซูมได้ถูกต้อง

-(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;}
}

วิธีการข้างต้นควรตรวจสอบการเปลี่ยนแปลงตำแหน่งของผู้ใช้ จากนั้นจึงตั้งค่าตำแหน่งเมื่อพบ จากนั้น ฉันตั้งเงื่อนไขในคำสั่ง if เพื่อหยุด -- ไม่เช่นนั้น มันจะย้ายกลับไปยังตำแหน่งของผู้ใช้เมื่อคุณเลื่อนแผนที่ไปรอบๆ


person Adama    schedule 20.02.2013    source แหล่งที่มา


คำตอบ (1)


สำหรับฉันดูเหมือนว่า self.mapView.showsUserLocation ถูกตั้งค่าเป็น FALSE เมื่อป๊อปอัปปรากฏขึ้นเนื่องจากยังไม่ทราบตำแหน่งของผู้ใช้ เพื่อแก้ไขปัญหานี้ ฉันขอแนะนำให้ใช้ตัวแปรของคุณเอง สร้างบูลีนส่วนกลางในคลาสนี้และใช้แทน self.mapView.showsUserLocation นอกจากนี้ ตรวจสอบให้แน่ใจว่าฟังก์ชันนี้ถูกเรียกจริง ๆ หลังจากที่ผู้ใช้ยอมรับป๊อปอัป คุณเคยเล่น NSLogging หรือไม่?

person WolfLink    schedule 21.02.2013