Comment puis-je ouvrir Google Maps pour les directions à l'aide de coordonnées sur l'iPhone

voix
18

J'utilise UIMapView pour afficher des emplacements sur l'iPhone. Je veux faire un sens de l'emplacement actuel à l'emplacement d'intérêt, je ne pense pas que son possible en utilisant MapKit (mais si elle est s'il vous plaît informer) Je vais donc ouvrir soit l'application Google Maps ou Safari pour l'afficher.

Puis-je faire cela en spécifiant les coordonnées du (emplacement actuel) pour coordonnées (l'emplacement d'intérêt) que j'ai ces longitudes et latitudes. Ou dois-je utiliser les adresses de la rue?

Si je dois utiliser des adresses de la rue, je peux les obtenir à partir de la latitude et la longitude.

Créé 10/10/2009 à 14:58
source utilisateur
Dans d'autres langues...                            


7 réponses

voix
75

Oui, il est impossible à l'aide MapKit. Vous pouvez essayer de former une demande d'URL Google Maps qui contient à la fois votre position actuelle et la destination qui ouvrira ses portes dans l'application Google Maps avec les directions.

Voici un exemple d'URL:

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

Voici comment vous pouvez mettre en œuvre dans votre code:

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]];
Créé 12/10/2009 à 06:37
source utilisateur

voix
4

Utilisez le code ci-dessous pour les cartes de Google et Apple dans 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)!)
        }
Créé 04/01/2017 à 19:42
source utilisateur

voix
2

Il est possible.Use MKMapView Obtenir l'emplacement de coordonnées où vous avez appuyé sur le téléphone et en utilisant les deux coordonnées demandent le KML fichier du service Web de Google, analyser le KML fichier (exemple d' application de visionneuse KML dans le site développeur) et afficher les routes .. ..
Merci

Créé 29/06/2011 à 07:23
source utilisateur

voix
1

Première carte vérification de Google est installé dans le périphérique ou non

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://");
    }

Ajouter un schéma de requête dans .plist

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>
Créé 15/06/2017 à 11:06
source utilisateur

voix
1

Il est possible de montrer la route à MapKit: Il suffit d'utiliser MKPolyline

Je reçois chaîne polyligne de googleMapsApi. Je l'analyse syntaxique sur le serveur avec php, et retourne la chaîne de polilyne final à mon application.

NSMutableArray *points = [myApp decodePolyline:[route objectForKey:@"polyline"]];

if([points count] == 0)
{
    return;
}

// while we create the route points, we will also be calculating the bounding box of our route
// so we can easily zoom in on it. 
MKMapPoint northEastPoint; 
MKMapPoint southWestPoint; 

// create a c array of points. 
MKMapPoint* pointArr = malloc(sizeof(CLLocationCoordinate2D) * [points count]);

for(int idx = 0; idx < points.count; idx++)
{
    // break the string down even further to latitude and longitude fields. 
    NSString* currentPointString = [points objectAtIndex:idx];
    NSArray* latLonArr = [currentPointString componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]];

    CLLocationDegrees latitude  = [[latLonArr objectAtIndex:0] doubleValue];
    CLLocationDegrees longitude = [[latLonArr objectAtIndex:1] doubleValue];

    // create our coordinate and add it to the correct spot in the array 
    CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude);

    MKMapPoint point = MKMapPointForCoordinate(coordinate);

    if (idx == 0) {
        northEastPoint = point;
        southWestPoint = point;
    }
    else 
    {
        if (point.x > northEastPoint.x) 
            northEastPoint.x = point.x;
        if(point.y > northEastPoint.y)
            northEastPoint.y = point.y;
        if (point.x < southWestPoint.x) 
            southWestPoint.x = point.x;
        if (point.y < southWestPoint.y) 
            southWestPoint.y = point.y;
    }
    pointArr[idx] = point;
    _currentLenght++;
}

// create the polyline based on the array of points. 
self.routeLine = [MKPolyline polylineWithPoints:pointArr count:points.count];

_routeRect = MKMapRectMake(southWestPoint.x, southWestPoint.y, 
                           northEastPoint.x - southWestPoint.x, 
                           northEastPoint.y - southWestPoint.y);

// clear the memory allocated earlier for the points
free(pointArr);

if (nil != self.routeLine) {
        [self.mapView addOverlay:self.routeLine];
}
[self.mapView setVisibleMapRect:_routeRect];

Et montrant:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKOverlayView* overlayView = nil;

if(overlay == self.routeLine)
{
    self.routeLineView = [[[MKPolylineView alloc] initWithPolyline:self.routeLine] autorelease];
    self.routeLineView.fillColor = [UIColor blueColor];
    self.routeLineView.strokeColor = TICNavigatorColor;
    self.routeLineView.lineWidth = 7;
    self.routeLineView.lineJoin = kCGLineJoinRound;
    self.routeLineView.lineCap = kCGLineCapRound;

    overlayView = self.routeLineView;
}

return overlayView; 
}

Essaie.

Créé 28/09/2012 à 07:53
source utilisateur

voix
1

Une solution solide est de créer un contrôleur de vue avec un NIB qui comprend un UIWebView, puis passer l'URL qui exerce carte / services de direction de Google. De cette façon, vous gardez l'utilisateur dans l'application. Cette approche ne suffit pas lorsque vous tirez une page Web, parce que le kit Apple ne prend pas en charge le zoom. Mais avec OS4, au moins l'utilisateur peut double cliquer sur le bouton d'accueil et revenir à l'application.

Créé 07/05/2010 à 00:55
source utilisateur

voix
-1

Vous pouvez envoyer la broche est tombé à vous et lorsque vous ouvrez le lien dans l'email, il affiche les coordonnées.

Créé 18/08/2011 à 06:54
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more