2010-05-31 23 views
6

Şu anda, kullanıcının geçerli şehir ve Mapkit Framework kullanıyorum konum göstermek zorunda bir iPhone uygulaması geliştiriyorum.Uygulama iyi çalışıyor ve bana kesin şehir ayrıntılarını gösterdiğinde. Ama şu anda ben uygulamayı benim günlüğüneMKReverseGeocoder sunucu döndürdü hata: 503

/SourceCache/ProtocolBuffer_Sim/ProtocolBuffer-26/Runtime/PBRequester.m:523 sunucu döndürülen hata hata mesajı aşağıdaki tekrar uygulama gösterileri oluşturmaya çalıştığınızda: 503

reverseGeocoder: didFailWithError: Hata Etki Alanı = PBRequesterErrorDomain Kodu = 6001 "İşlem tamamlanamadı. (PBRequesterErrorDomain error 6001.)"

Herhangi bir beden aynı sorunu yaşıyor mu ve nasıl çözebilirim?

+0

Şu anda bu sorunu yaşıyorum. Etrafında dolaşmanın bir yolunu mu buldun? – Neelesh

cevap

9

Bunun olup bittiğinden eminim çünkü test aşamasındasınız ve ters coğrafi kodlayıcıyı çok fazla kullanıyorsunuz ve Google'ın sunucuları bunu biliyor. Yani, sizi bir süreliğine temelde bloke etti. Daha sonra tekrar deneyin ve işe yarayıp yaramadığını görün.

Jeocoder'ı her 60 saniyede bir kez çağırmamanız gerektiğinden emin olmanız gerekir.

+0

Merhaba, Nic çoğunlukla uygulamanız bu hata mesajını Hindistan'da 1 PM'ye kadar gösteriyor ve bundan sonra gayet iyi çalışıyor, sanırım google onların sunucusunu şu anda güncelliyor olabilir. – raaz

+0

İyi, lütfen bu cevabı cevaplandı olarak işaretleyin. –

+0

Bu ciddi neden mi? Kullanıcının etrafta sürükleyebileceği bir pim var ve yeni adresle güncelleniyor ... Bu durumda, kullanıcı pimi her seferinde bir kereden az değilse, pimi etrafa sürükleyemez ve güncellenemez saniye ...! – jowie

0

Sunucunun durumuna bağlı olarak rasgele olabilir.

2

Öğreniyorum!
Şimdi, CLGeocoder'ı kullanmamız gerekecek, ancak yine de MKReverseGeocoder'ı kullanmak istiyorsanız, geocode nesnesi yeni bir tane olsa bile, [geocoder start] 'ı iki kez çağırmamalısınız!

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
     MKReverseGeocoder *geoCoder = [[[MKReverseGeocoder alloc] initWithCoordinate:newLocation.coordinate] autorelease]; 
     geoCoder.delegate = self; 
     [geoCoder start]; 
} 

Veya bir arror alırsınız: Örneğin, bu YAPMAYIN konum yöneticisi güncelleme pozisyon fonksiyonu en kısa sürede yeni bir pozisyon tespit edilir edilmez deniliyor. Doğruluk daha iyi ve daha iyi hale geldiğinden, "didUpdateToLocation" a yeni ve yeni bir yeni gönderi gönderiliyor.
Ancak, yeni bir nesne oluştururken MKReverseGeocoder bir konum bulduğunda kötü bir fikir! Yani, birkaç çözümünüz var:
- Coğrafi kodlama başlatıldığında doğru olan bir boole yerleştirin. Daha sonra didFindPlacemark'ta (coğrafi kodlayıcı), coğrafi kodlayıcıyı [geocoder cancel] ile durdurmalı ve boole'unuzu false değerine ayarlamalısınız.
- Coğrafi kod değişkenini yerel yapmayın ve [geocoder cancel] + realease'i yönetin ve yeni bir tane oluşturduğunuzda ve [geocoder start] her seferinde oluşturulduToLocation aranıyor.
- [geocoder başlangıcından] kaçınmanın başka bir yolu, iki kez çağrılacak.

İlk çözümü kullandım ve artık 503 hatasını almadım.

+0

Ne yazık ki benim için işe yaramadı. Her seferinde iptal etseniz bile, MKReverseGeocoder çok düzenli çağrılırsa 503 atar. – jowie

2

Benim için MKReverseGeocoder 503 ile çok fazla başarısız oldu. Aynı zamanda 60 saniye geçtikten sonra ilk kez talep edildi. Sonuç olarak, kullanmayı bırakmaya karar verdim ve bunun yerine, SBJSON Çerçevesini (çok kullanışlı) kullanarak bir JSON Dizesi olarak sonucu ayrıştıran bir hizmet aracılığıyla doğrudan NSURLRequest kullanarak Google'ın API'sine erişmeye karar verdim. Benim hizmetinden

, ben şöyle aşağıdaki URL'yi çağırır: coordinate bir CLLocationCoordinate2D olduğunu

NSString *urlStr = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&sensor=true", coordinate.latitude, coordinate.longitude]; 

.

Bu sorunun uzun bir yol olduğunu anlıyorum, ancak bu sisteme dönüştürüldüğünden beri hiçbir sorunum olmadı!

+0

Bu, MKReverseGeocoder'a gerçekten iyi bir alternatif! – venj

İlgili konular