Open Maps-app von Code - Wo/Wie finden Sie die "Aktuelle Lage"?
Ich bin Karten-app öffnen, um zu zeigen, Wegbeschreibung vom Aktuellen Standort zu einem Ziel zu koordinieren, von meinem code. Ich bin mit dem folgenden code zum öffnen der Karten-app. Ich rufe diesen code, wenn ein button gedrückt wird. getCurrentLocation
ist eine Methode, die zurückgibt, die vor kurzem aktualisiert, Standort.
- (void)showDirectionsToHere {
CLLocationCoordinate2D currentLocation = [self getCurrentLocation]; //LINE 1
NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%f,%f",
currentLocation.latitude,
currentLocation.longitude,
destCoordinate.latitude,
destCoordinate.longitude];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
Hier [self getCurrentLocation]
im LINIE 1 verwendet CLLocationManager
zu bestimmen, die Aktuelle Position und gibt den Wert zurück.
Hinweis: habe ich noch nicht implementiert, den code in LINE1. Ich habe nur geplant, es zu tun auf diese Weise.
Meine Fragen sind:
- Ist diese gute Praxis, die zum berechnen der Aktuellen Position, an der Zeit, die Karten-app genannt wird?
- Wird
[self getCurrentLocation
] return die Aktuelle Lage voropenURL
aufgerufen wird? - Muss ich haben, um zu bestimmen, den Aktuellen Standort, sowie vor dem öffnen der Karten-app?
Bin ich etwas verwirrt über diese Dinge. Freundlicherweise mich leiten. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie nicht haben, um zu bestimmen, den aktuellen Standort des Benutzers selbst, die Karten-app wird sich darum kümmern.
Statt der übergabe eines Breitengrad/Längengrad-paar, die Sie übergeben können
Current%%20Location
und Karten bestimmen den aktuellen Standort des Benutzers selbst.%20
ist ein url-kodiertes Leerzeichen, und die extra%
entweicht die tatsächliche%
damit es nicht so interpretiert werden, ein format zu ersetzen.Dank @Carlos P für den Hinweis auf meine escape-Zeichen, Fehler in der ursprünglichen Antwort.
[NSString stringWithFormat: @"http://maps.google.com/maps?saddr=Current%20Location&daddr=%f,%f", destCoordinate.latitude, destCoordinate.longitude]
%
Charakter, ich kann mich nicht erinnern, ab Wann ich das Letzte mal Tat es. VerwendenCurrent\%20Location
. Wenn nicht, dann NSLog Ihre url-Zeichenfolge, nach der Formatierung, um sicherzustellen, der rest sieht richtig aus.http://maps.google.com/maps?saddr=Current 24000000000cation&daddr=2.000000,0.000000
. Es fügt einige Leerzeichen zwischen Aktuell und 24000000000cationCurrent 24000000000cation
? Offensichtlich, dass ist nicht richtig. Setzen Sie den backslash vor der%
wie ich oben vorgeschlagen und es wird das problem lösen.NSString stringWithFormat
-- klar ich hab nicht aufgepasst.Mit "Aktuelle Position" als saddr funktioniert nur, wenn der Benutzer über die system-Sprache auf Englisch eingestellt. Die beste Möglichkeit ist wirklich, um die aktuelle position von der Core-Position und verwenden Sie, dass als saddr.
Als pazustep wies darauf hin, "Aktueller Standort" funktioniert nur für Englisch. In Italien, zum Beispiel die korrekte Zeichenfolge "Posizione attuale".
Schnüffeln in der iPhone-firmware, die ich erkannt alle "Aktuellen Standort" übersetzungen und schrieb ich eine Klasse, die richtige string für Sie (derzeit) unterstützte Sprache.
Gibt es einen post über das (source-code im Lieferumfang enthalten) auf meinem blog: http://www.martip.net/blog/localized-current-location-string-for-iphone-apps.
Können Sie mit der neuen
MKMapItem
Klasse für iOS 6. Finden Sie auf der Apple-API-docs hierIm Grunde, verwenden Sie so etwas wie dies, wenn das routing zum Ziel Koordinaten (
destCoordinate
):Zur Unterstützung sowohl iOS 6+ und vor iOS 6, in der gleiche code ist, würde ich empfehlen, mit so etwas wie dieser code, dass Apple hat auf der
MKMapItem
API-doc Seite:Diese würde davon ausgehen, dass Sie Ihre Xcode-Basis-SDK ist für iOS 6 (oder Neuesten iOS).
In dieser anderen beantworten, ich biete eine robuste Technik für iOS 5.1 und niedriger
mapItemForCurrentLocation
.mapItemForCurrentLocation
.