MKReverseGeocoder werkt niet op GPRS

MKReverseGeocoder werkt niet op GPRS discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) In mijn iPhone-app maak ik gebruik van een MKReverseGeocoder om de plaatsnaam op te halen. Dit doe ik via een void die ik heb gekoppeld ...



Ga terug   iPhone, iPod touch, iPad en Apple TV forum > Development > Ontwikkelen voor iOS
Wachtwoord vergeten? Registreren!
Registreer FAQ Ledenlijst Kalender Zoeken Berichten van vandaag Markeer forums als gelezen
  #1  
Oud 16 June 2010, 20:01
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard MKReverseGeocoder werkt niet op GPRS

In mijn iPhone-app maak ik gebruik van een MKReverseGeocoder om de plaatsnaam op te halen. Dit doe ik via een void die ik heb gekoppeld aan een NSTimer die elke seconde blijft herhalen.
Helaas kom ik er bij het testen achter dat de MKReverseGeocoder het niet doet via GPRS. Zou iemand mij kunnen vertellen of dit normaal is en wat ik er aan kan doen om dit op te lossen?

Groet,

Jelle
Advertentie
Advertentie Gesponsorde links (verdwijnt na registratie)

  #2  
Oud 17 June 2010, 12:04
» iPhone 5s 16GB (Goud) [FW: 7.1.2]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 12 January 2009
Berichten: 484
Standaard

Zou moeten werken, maar mischien is het wel zo dat het ophalen van de data over GPRS langer duurt dan de 1 seconde van je timer. Sowieso lijkt het me niet echt netjes om dit met een timer te doen.
Daarnaast MAG het ook niet eens van apple om dit elke seconde te doen (uit de api documentatie):
Each Map Kit application has a limited amount of reverse geocoding capacity, so it is to your advantage to use reverse geocode requests sparingly. Here are some rules of thumb for using this class most effectively:
  • Send at most one reverse-geocoding request for any one user action.
  • If the user performs multiple actions that involve reverse-geocoding the same location, reuse the results from the initial reverse-geocoding request instead of starting individual requests for each action.
  • When you want to update the location automatically (such as when the user is moving), reissue the reverse-geocoding request only when the user's location has moved a significant distance and after a reasonable amount of time has passed. For example, in a typical situation, you should not send more than one reverse-geocode request per minute.
  • Do not start a reverse-geocoding request at a time when the user will not see the results immediately. For example, do not start a request if your application recently resigned the active state (possibly because of an interruption such as a phone call) and is waiting to become active again.
Je moet gewoon CLLocationManager gebruiken, en de delegate methods implementeren, dan krijg je elke keer als je locatie verandert een seintje. En wanneer het ECHT nodig is om de adresgegevens op te halen, dan kan je de MKReverseGeocoder aanroepen.
__________________
Software Engineer
iPhone Developer
  #3  
Oud 17 June 2010, 19:26
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard

Bedankt voor de informatie.

Ik moet dus CLLocationManager gebruiken. Is er dan 1 -(void) die mij vertelt wanneer de UserLocation bekend is?
Zo ja, wil iemand die mij geven?

(Btw: ik heb zelf al uitgebreid gegoogled.)

EDIT!: Je had gelijk, op GPRS heeft de app simpelweg meer tijd nodig om plaatsnaam te vinden. Zou Apple het wel goedkeuren als ik een timer met een interval van 5 seconden gebruik?

Laatst gewijzigd door Jelle Ages; 17 June 2010 om 22:55.
  #4  
Oud 18 June 2010, 11:16
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Citaat:
Oorspronkelijk geplaatst door Jelle Ages Bekijk bericht
Je had gelijk, op GPRS heeft de app simpelweg meer tijd nodig om plaatsnaam te vinden. Zou Apple het wel goedkeuren als ik een timer met een interval van 5 seconden gebruik?
Waarom blijf je aan deze oplossing (die geen oplossing is) vasthouden? Dit is gewoon een verkeerde implementatie.
Bedenk eens goed waarom je in hemelsnaam iedere seconde of iedere 5 seconden de plaatsnaam wil opvragen. Reis je met een straaljager of zo?

Ga voor de echte oplossing en bekijk de delegate methods van CLLocationManager eens goed. Niet Googlen dus, maar de API goed lezen.

Kijk bijvoorbeeld eens naar (toch googlen)
Code:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation;
__________________
Leon
[iPhone- en Java ontwikkelaar]

Laatst gewijzigd door wubbe; 18 June 2010 om 11:25.
  #5  
Oud 18 June 2010, 14:19
» iPhone 5s 16GB (Goud) [FW: 7.1.2]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.1.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 12 January 2009
Berichten: 484
Standaard

Apple heeft ook een leuk voorbeeld projectje:
LocateMe:
https://developer.apple.com/iphone/l...ion/Intro.html
  #6  
Oud 19 June 2010, 15:34
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard

Dank voor advies.

Ik heb nu in de documentatie het volgende gevonden:

Code:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
Het lijkt me dat dit goed bruikbaar is voor mij. Helaas krijg ik een hoop warnings als ik hem implementeer in mijn project. Dit komt omdat ik in het void een MKReverseGeocoder gebruik. Hiervoor heb ik ook info van de mapview nodig. Hij geeft dan aan: 'Local declaration of 'mapView' hides instance variable'.
Ik denk dat dit komt omdat ik in de *.h file van de viewController een MKMapView aanmaak.

Iemand een oplossing hoe ik dit oplos?
  #7  
Oud 19 June 2010, 22:45
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard

Als ik trouwens nog even terug mag komen op je eerste post in dit topic: het gaat mij er niet om dat er telkens wordt gecontroleerd of de locatie is veranderd, maar alleen om de locatie van het moment wanneer de app opstart. Ik doe dit via een timer, die gekoppeld is aan een void die een ReverseGeocoder aanzet. Wanneer deze zijn taak voltooid heeft, laat ik de timer stoppen.

Dit zal Apple toch wel goedkeuren?
  #8  
Oud 19 June 2010, 23:42
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Apple kijkt volgens mij naar andere zaken.
Ik snap echter nog steeds niet waarom je een timer nodig hebt. Een paar postings terug heb je het over een interval van 5 seconden, en nu wil je eenmalig de locatie weten.

Lees eens goed in de documentatie wat een delegate is. Als je dat begrijpt zul je zien dat je geen timer nodig hebt.
  #9  
Oud 20 June 2010, 00:38
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard

Ik heb een timer nodig omdat de app na het opstarten moet kijken in welke plaats de gebruiker zich bevindt. Als dit na vijf seconden niet gelukt is (slechte gps- en/of internetverbinding bijvoorbeeld) moet hij het over vijf seconden nog een keer proberen, tot het wel gelukt is.

Ik weet nu wat een delegate is. Als ik me niet vergis is dit ook een delegate:

Code:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
Ik weet alleen niet hoe ik 'm moet gebruiken.

Jelle
  #10  
Oud 20 June 2010, 00:50
» iPhone 4 32GB (Zwart) [FW: 5.0]  [Jailbreak: Nee]
» iPad 3 Wi-Fi 16GB (Zwart) [FW: 5.1]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 14 October 2008
Locatie: Haarlem
Berichten: 348
Standaard

Citaat:
Oorspronkelijk geplaatst door Jelle Ages Bekijk bericht
Ik weet nu wat een delegate is.
Dat betwijfel ik.
Een delegate vertelt jou als hij een plaatsbepaling heeft gedaan, in plaats van dat je het hem moet vragen. Daarom heb je helemaal geen timer nodig.

Het Locate Me voorbeeld laat dat allemaal zien. Ik zou dat eens goed bekijken.
  #11  
Oud 20 June 2010, 01:07
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard

Ja, maar die plaatsbepaling doe ik via een MKMapView en daar zie ik niks over in LocateMe. Ik heb een timer nodig omdat het void dat de ReverseGeocoder regelt, het meerdere keren moet proberen omdat in het begin de userLocation op de mapview nog niet bekend is.
Aan een LocationManger heb ik dus niks, omdat ik afhankelijk ben van de MapView.
  #12  
Oud 20 June 2010, 21:57
» iPhone 3GS 32GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 21 August 2008
Locatie: Antwerpen
Berichten: 89
Standaard

Citaat:
Oorspronkelijk geplaatst door Jelle Ages Bekijk bericht
Ik heb een timer nodig omdat het void dat de ReverseGeocoder regelt...
Ik zie je de hele tijd spreken over "het void". Wat bedoel je daar eigenlijk mee??
  #13  
Oud 20 June 2010, 22:43
Jelle Ages's schermafbeelding
» iPhone 4 16GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 64GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 2 March 2008
Berichten: 115
Standaard

Er staat achter: 'dat de ReverseGeocoder regelt'. Dit slaat op 'het void'. Ik bedoel dus met 'het void dat de ReverseGeocoder regelt' een -(void) { } waarin staat dat er een MKReverseGeocoder geactiveerd moet worden.
  #14  
Oud 20 June 2010, 23:30
» iPhone 3GS 32GB (Zwart) [FW: 5.0 Beta]  [Jailbreak: Nee]
» iPad 1 Wi-Fi 16GB [FW: 5.0 Beta]  [Jailbreak: Nee]
» Mac OS X
 
Geregistreerd: 21 August 2008
Locatie: Antwerpen
Berichten: 89
Standaard

Het is mierenneukerij maar je kan het beter gewoon "de methode" noemen

Er zijn nog wel een paar momenten dat je een verkeerde definitie gebruikt... een delegate is geen functie, zoals jij aangeeft, maar een klasse die een bepaald protocol ondersteunt en daarvoor een implementatie van een functie of methode voorziet.
Reageren


Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten)

 
Discussietools
Weergave

Soortgelijke discussies

Discussie Auteur Forum Reacties Laatste bericht
Telfort internet (gprs) werkt niet. MP3-junky KPN, Hi, Telfort, MTV Mobile 58 15 June 2009 14:48
ipphone 1G + proximus => gprs werkt niet matty Proximus 5 8 December 2008 15:25
Telfort gprs werkt niet Arne2606 KPN, Hi, Telfort, MTV Mobile 2 27 September 2008 18:37
EDGE/gprs werkt niet op 1.1.3!!! Gavrosh iPhone algemeen 10 15 February 2008 14:18
Orange GPRS/EDGE werkt niet ! Grample Overige providers Nederland 20 13 February 2008 16:32

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 11:05.