2012-05-24 64 views
25

Tôi cố gắng để mã địa lý địa chỉ vào tọa độ sử dụng đoạn mã sau:địa chỉ mã hóa địa lý vào tọa độ trong iphone

CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
    [geocoder geocodeAddressString:@"6138 Bollinger Road, San Jose, United States" completionHandler:^(NSArray* placemarks, NSError* error){ 
        for (CLPlacemark* aPlacemark in placemarks) 
        { 
         // Process the placemark. 
         NSString *latDest1 = [NSString stringWithFormat:@"%.4f",aPlacemark.location.coordinate.latitude]; 
         NSString *lngDest1 = [NSString stringWithFormat:@"%.4f",aPlacemark.location.coordinate.longitude]; 
         lblDestinationLat.text = latDest1; 
         lblDestinationLng.text = lngDest1; 
        } 
       }]; 

Tôi đã thử nó nhiều lần nhưng debugger không bao giờ đi vào khối và tôi không thể có được vị trí . Ai đó có thể giúp tôi với nó không?

Trân
Pankaj

+0

Cảm ơn rất nhiều, sau khi trải qua nửa ngày tôi đã nhận các giải pháp từ câu hỏi của bạn. Vì vậy, một UP và dấu sao cho câu hỏi của bạn. Cảm ơn một lần nữa. –

+0

làm thế nào để tiết kiệm kinh độ và vĩ độ trong một biến bên ngoài khối này plz ?? Bởi vì tôi cần truyền chúng cho bộ điều khiển khác. – user3722523

+0

@ user3722523 bạn sẽ phải xác định một biến bên ngoài khối và đánh dấu nó là __block. Bây giờ bạn sẽ có thể truy cập vào biến bên trong khối và bạn có thể lưu các giá trị cho biến này. – pankaj

Trả lời

10

Được rồi, tôi đã tìm thấy lỗi của mình. Mã đúng và hoạt động hoàn hảo. Tất cả thời gian tôi đã làm việc trên nó là thông qua trình gỡ rối và cố gắng tìm ra lý do tại sao trình gỡ lỗi không nhập vào khối. Nhưng bây giờ tôi đã phát hiện ra trình gỡ lỗi không nhập vào khối tại thời điểm đó. Phải mất ít trong việc nhận được các giá trị vị trí. Nó được thực hiện không đồng bộ vì vậy tôi đã không thể tìm thấy nó và tôi đã nhận được vụ tai nạn vì không có giá trị chỉ sau vụ tai nạn. Tôi đã di chuyển khối bài viết mã của tôi để bên trong khối và tất cả mọi thứ hoạt động tốt cho tôi bây giờ.

0

Tôi chỉ cần chạy mã chính xác và nó làm việc như mong đợi. Đảm bảo rằng bạn có kết nối internet đang hoạt động.

Thử thêm NSLog vào chuỗi và xem liệu nó có được gọi hay không.

NSLog(@"lat: %@, lng: %@", latDest1, lngDest1); 

Bạn có đang chạy mô phỏng hoặc thiết bị không?

0

Chặn là các tính năng mới cho Mục tiêu C từ iOS4.0 trở đi. Một khối bạn có thể tưởng tượng như một phương thức đại biểu làm việc trong cùng một khối chức năng. Đối với bất kỳ phương thức ủy nhiệm nào, nó cần có thời gian để gọi, tùy thuộc vào điều kiện, cùng một cách khối thực hiện mã bên trong nó, khi nó hoàn thành công việc mã hóa địa lý của nó. Bạn có thể đọc thêm về Chặn tài liệu trong táo hoặc đọc http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part-2.

Bạn cũng có thể đã nhìn vào kho lưu trữ của tôi trên Github https://github.com/Mangesh20/geocoding

Các vấn đề liên quan