23 Stimmen

Wie öffne ich Google Maps für Wegbeschreibungen mit Koordinaten auf dem iPhone?

Ich verwende UIMapView, um Standorte auf dem iPhone anzuzeigen. Ich möchte eine Wegbeschreibung vom aktuellen Standort zum Ort des Interesses zu tun, ich glaube nicht, dass es möglich ist, mit MapKit (aber wenn es ist bitte informieren) So werde ich entweder die Google Maps-Anwendung oder Safari öffnen, um es anzuzeigen.

Kann ich dies tun, indem ich die Koordinaten von (dem aktuellen Standort) bis zu den Koordinaten (dem Ort von Interesse) angebe? Ich habe diese Längen- und Breitengrade. Oder muss ich Straßenadressen verwenden?

Wenn ich Straßenadressen verwenden muss, kann ich sie aus dem Breiten- und Längengrad ableiten.

76voto

Adolfo Punkte 3006

Ja, das ist mit MapKit nicht möglich. Sie könnten versuchen, eine Google Maps-Url-Anforderung zu bilden, die sowohl Ihren aktuellen Standort als auch Ihr Ziel enthält, das in der Google Maps-App mit der Wegbeschreibung geöffnet wird.

Hier ist eine Beispiel-URL:

http://maps.google.com/?saddr=34.052222,-118.243611&daddr=37.322778,-122.031944

So könnten Sie dies in Ihrem Code implementieren:

CLLocationCoordinate2D start = { 34.052222, -118.243611 };
CLLocationCoordinate2D destination = { 37.322778, -122.031944 };    

NSString *googleMapsURLString = [NSString stringWithFormat:@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",
                                 start.latitude, start.longitude, destination.latitude, destination.longitude];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:googleMapsURLString]];

13voto

Vishwas Singh Punkte 1295

Verwenden Sie den folgenden Code für Google und Apple Maps in Swift 3 -

if UIApplication.shared.canOpenURL(URL(string: "comgooglemaps://")!)
        {
            let urlString = "http://maps.google.com/?daddr=\(destinationLocation.latitude),\(destinationLocation.longitude)&directionsmode=driving"

            // use bellow line for specific source location

            //let urlString = "http://maps.google.com/?saddr=\(sourceLocation.latitude),\(sourceLocation.longitude)&daddr=\(destinationLocation.latitude),\(destinationLocation.longitude)&directionsmode=driving"

            UIApplication.shared.openURL(URL(string: urlString)!)
        }
        else
        {
            //let urlString = "http://maps.apple.com/maps?saddr=\(sourceLocation.latitude),\(sourceLocation.longitude)&daddr=\(destinationLocation.latitude),\(destinationLocation.longitude)&dirflg=d"
            let urlString = "http://maps.apple.com/maps?daddr=\(destinationLocation.latitude),\(destinationLocation.longitude)&dirflg=d"

            UIApplication.shared.openURL(URL(string: urlString)!)
        }

3voto

Hardik Thakkar Punkte 14308

Prüfen Sie zunächst, ob Google Maps auf dem Gerät installiert ist oder nicht.

if ([[UIApplication sharedApplication] canOpenURL:
         [NSURL URLWithString:@"comgooglemaps://"]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"comgooglemaps://?saddr=23.0321,72.5252&daddr=22.9783,72.6002&zoom=14&views=traffic"]];
    } else {
        NSLog(@"Can't use comgooglemaps://");
    }

Abfrageschema in .plist hinzufügen

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>

2voto

Govind Punkte 2279

Das ist möglich. MKMapView Ermitteln Sie die Koordinaten des Ortes, an dem Sie auf das Telefon getippt haben, und fordern Sie mit den beiden Koordinaten die KML Datei vom Google-Webdienst, parsen Sie die KML Datei (Beispiel-App KML-Viewer auf der Entwicklerseite) und zeigen Sie die Routen an....
Dankeschön

1voto

Kirk Punkte 501

Eine solide Lösung besteht darin, einen View-Controller mit einem NIB zu erstellen, der ein UIWebView enthält, und dann die URL zu übergeben, die die Karten-/Richtungsdienste von Google nutzt. Auf diese Weise bleibt der Benutzer in der Anwendung. Dieser Ansatz ist nicht ausreichend, wenn man eine Webseite aufruft, da das Apple-Kit kein Zoomen unterstützt. Aber mit OS4 kann der Benutzer wenigstens die Home-Taste doppelt anklicken und zur Anwendung zurückkehren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X