2009-08-04 6 views
2

Ich schreibe eine standortbasierte Anwendung, und ich habe derzeit ein iPhone erste Generation, aber ich frage mich, wie lange es dauert, bis ein iPhone 3G oder 3Gs seine Position zu verwenden der GPS-Chip?Angemessene Länge der Zeit, um den Standort des Benutzers zu bestimmen iPhone

Soweit ich es verstehe, locationManager: didUpdateToLocation: fromLocation: kann mit immer genaueren Ortsinformationen aufgerufen werden (es gibt keine Garantien). Also würde ich gerne einen Timer erstellen, der, wenn der Standort des Benutzers nicht durch die Zeit x bestimmt wird, dann hören wir einfach auf, es zu bestimmen und gehen mit dem, was wir haben.

Gibt es auch einen Weg, ich kann herausfinden, ob das Gerät einen GPS-Chip hat oder nicht? Ich weiß, ich kann einfach den Gerätetyp in UIDevice und Distinguish zwischen Touch und iPhone sehen, aber wie wäre es mit iPhone ohne GPS und mit GPS?

Danke!

Antwort

1

Für Ihre letzte Antwort würde ich Sie auf this SO question hinweisen. Je nachdem, ob sein iPhone1,1 oder iPhone1,2 Sie erkennen, ob es einen GPS-Chip hat oder nicht.

Für den ersten Teil Ihrer Frage kann ich Ihnen sagen, wie ich es in meiner Anwendung gemacht habe. Ich starte zwei Timer, sagen einen shortTimer und einen longTimer, die beide dieselbe Callback-Methode aufrufen. Die Callback-Methode wartet, bis beide Timer ausgelöst wurden und erst danach weitere Arbeiten ausführen. Gleich nachdem ich die Timer gestartet habe, höre ich nach Ortsupdates. Wenn ein in der locationManager: didUpdateToLocation: fromLocation-Methode empfangener Ort aktuell und genau genug ist, feuere ich den langen Timer vorzeitig ab (d. H. Bevor er sich selbst auslöst).

Auf diese Weise warte ich mindestens shortTimer Timeout für eine aktuelle und genaue Position und höchstens TimeTimer Timeout. Angemessene Werte für diese? Experimentiere ein wenig, würde ich sagen. Da ich einen Begrüßungsbildschirm mit dem Firmenlogo habe, bevor ich fortfahre, ist mein shortTimer ziemlich lang (d. H. 4 Sekunden). Mein longTimer ist auf 20 Sekunden eingestellt. Das scheint für mich zu funktionieren.

HTH

0

ich sagen, dass es für eine Minute würde versuchen, lassen Sie Ihren Standort zu bestimmen. Nach meiner Erfahrung, meinen Standort in Google Maps im iPhone zu triangulieren, gibt es mir im Allgemeinen eine Antwort zu dieser Zeit. Natürlich hängt es von Ihrer Granularität ab - wenn Sie eine Kilometergenauigkeit anfordern, erhalten Sie möglicherweise schneller eine Antwort, als Sie am besten definieren.

Ob das Gerät ein iPhone mit GPS ist oder nicht - der CoreLocation soll Ihnen diese Antwort ohne Wissen/Pflege geben. Möchten Sie den besten verfügbaren Standort erhalten, wenn GPS installiert ist? Wenn ja, gehen Sie mit kCLLocationAccuracyBest und Sie erhalten die genauesten Updates, die das Gerät unterstützt.

Wenn Sie eine GPS-Sperre erhalten, wird Ihre Genauigkeit (gemessen mit horizontalAccuracy) weniger als 10 m betragen. Alles größer und Sie haben kein GPS-Schloss, oder zumindest kein gutes.

Sie werden auch feststellen, dass die vertikale Genauigkeit auf einem GPS-fähigen Gerät vorhanden und nicht auf einem nicht GPS-Gerät aktiviert ist.

1

Ich bin kein Experte für die GPS-Implementierung im iPhone, aber ich kann die Länge der Zeit, die ein GPS-Gerät braucht, um seinen Standort zu finden, kommentieren.

Die Zeit, die das GPS benötigt, um die Satelliten zu erfassen und eine Korrektur zu erhalten, hängt von zwei Dingen ab - der Qualität der Himmelsansicht und der Menge, die das GPS über die Satellitenkonstellation weiß.

Die erste ist wichtig, weil das GPS in der Lage sein muss, die Satelliten zu sehen, die das Signal empfangen. Wenn Sie hier in Großbritannien an einer nach Norden ausgerichteten Wand stehen, haben Sie eine sehr schlechte Sicht auf die Satelliten, da keine der Umlaufbahnen mehr als 50-55 Grad nördlich ist, so dass Sie auf Satelliten beschränkt sind, die niedrig sind der Himmel und an den nördlichen Extremen ihrer Bahnen.

Der zweite Faktor hängt davon ab, wie lange es her ist, seit das GPS die Satelliten zuletzt gesehen und die Orbitalinformationen heruntergeladen hat (Almanach und Ephemeriden). Wenn das GPS über aktuelle Satellitendaten und eine gute Sicht verfügt, kann es innerhalb weniger Sekunden eine neue Lösung finden. Wenn das GPS an Strom verloren hat oder die Daten veraltet sind, dauert es 32 Sekunden plus die Satellitensuchzeit, um die neuen Daten zu laden. Die Zeit bis zur ersten Reparatur beträgt normalerweise 45 - 50 Sekunden für die meisten GPS-Geräte, die ich benutzt habe.

Verwandte Themen