2010-12-13 11 views
0

Ich habe die Apple Dokumentation (http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html) beim Senden eines Benutzers an die Google Maps App und ich überprüft habe eine Frage, "Wie habe ich es automatisch Richtungen aus dem aktuellen Standort des Benutzers zu einem vorgegebenen Lat/Long-Standort?iOS Google Maps Frage

Die Apple Docs sagen," saddr = "und" daddr = "für die Quelle zu verwenden und Ziel, aber es sagt nicht, wie man den gegenwärtigen Standort des Benutzers annimmt. Gibt es irgendeine Art Schlüsselwort wie "saddr = Current" oder "saddr = Here", das den Standort des Benutzers erhält?

offenbar dieses funktioniert nicht:

[app openURL:[NSURL URLWithString:@"http://maps.google.com/maps?saddr=Here&daddr=Chicago"]]; 

..wenn ich versucht habe, den Benutzer nach Chicago zu senden. Irgendwelche Gedanken?

Antwort

0

Ich glaube, dass saddr=Current%20Location&daddr=... ist das, was Sie wollen.

+0

"Aktueller Standort" wird nicht funktionieren, weil es die URL aufbricht. "Current", "Currentlocation" und "CURRENT_LOCATION" alle entweder nicht funktionieren. – startuprob

+0

Habe nicht bemerkt, dass du nicht aus deiner Zeichenfolge entkommen bist. Ich werde es jetzt mit dem Space-Zeichen maskiert bearbeiten. –

+3

Leider funktioniert & saddr = Current% 20Location nicht, wenn das Telefon auf eine nicht englische Sprache eingestellt ist. – chris

0

Sie können immer den umgekehrten Geocoder in iOS verwenden, um die aktuelle Standortadresse abzurufen (vorausgesetzt, der Benutzer kann den Standort ermitteln) und in der URL verwenden. MKReverseGeocoder ist ein Verweis auf die für die umgekehrte Geokodierung verwendete Klasse.

-Daniel

1

Ich glaube nicht, dass Sie das direkt tun können. Sie können jedoch Koordinaten in die Parameter unter Verwendung des Formats saddr=lat,long (z. B. addr=53.453209,-0.32930) eingeben. Wenn Sie also vor dem Versand an Google Maps den aktuellen Standort des Nutzers in Ihrer App ermitteln, erhalten Sie eine Annäherung an die Funktionalität.

3

QUELLE: How to invoke iPhone Maps for Directions with Current Location as Start Address

Sie benötigen Core-Standort zu verwenden, um den aktuellen Standort zu erhalten, aber mit diesem lat/long Paar, können Sie sich Karten Sie von dort zu routen, zu einer Adresse. Wie so:

CLLocationCoordinate2D currentLocation = [self getCurrentLocation]; 
    NSString* address = @"123 Main St., New York, NY, 10001"; 
    NSString* url = [NSString stringWithFormat: @"http://maps.google.com/maps?saddr=%f,%f&daddr=%@", 
        currentLocation.latitude, currentLocation.longitude, 
        [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    [[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]]; 
+0

Ich bekomme einen "Invalid Initializer" Fehler in der CLLocation Zeile. – startuprob

+0

Es sieht so aus, als müssten Sie eine - (CLLocationCoordinate2D) getCurrentLocation hinzufügen; Methode zu der Klasse, die Sie es nennen dieses Stück Code in, die eine CLLocationCoordinate2D zurückgibt, für die Verwendung in der Url Instantiierung. – Josh

1

Sie können nur Current + Location im saddr Teil der URL verwenden. Das funktioniert auf iOS, aber ich kann nicht finden, was für Android funktioniert.

1

Wenn Sie die Google Maps-URL einfach mit dem daddr-Parametersatz aufrufen, fügt Google Maps den aktuellen Standort des Benutzers automatisch in das Feld Von ein.

http://maps.google.de/maps?daddr=SOMEADDRESS

+0

Entschuldigung, dies funktioniert nur im Simulator (z. B. wenn Google Maps in Safari Mobile anstelle der nativen App gestartet wird) –

0
NSString* directionsURL = [NSString stringWithFormat:@"http://maps.apple.com/?saddr=%f,%f&daddr=%f,%f",self.mapView.userLocation.coordinate.latitude, self.mapView.userLocation.coordinate.longitude, mapPoint.coordinate.latitude, mapPoint.coordinate.longitude]; 
if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: directionsURL] options:@{} completionHandler:^(BOOL success) {}]; 
} else { 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: directionsURL]]; 
}