¿Cómo abro Google Maps para obtener direcciones usando coordenadas en el iphone?

votos
18

Estoy usando UIMapView para visualizar ubicaciones en el iPhone. Quiero hacer una ruta desde la ubicación actual hasta la ubicación de interés, no creo que sea posible utilizar MapKit (pero si es así, infórmenos). De modo que abriré la aplicación Google Maps o safari para mostrarla.

¿Puedo hacer esto especificando coordenadas desde (ubicación actual) a coordenadas (la ubicación de interés)? Tengo estas longitudes y latitudes. ¿O tengo que usar direcciones de calles?

Si tengo que usar direcciones de calles, ¿puedo obtenerlas a partir de la latitud y la longitud?

Publicado el 10/10/2009 a las 14:58
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
75

Sí, no es posible usar MapKit. Puede tratar de crear una solicitud de URL de Google Maps que contenga tanto su ubicación actual como su destino que se abrirá en la aplicación Google Maps con las instrucciones.

Aquí hay un ejemplo de url:

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

Así es cómo podría implementar esto en su código:

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]];
Respondida el 12/10/2009 a las 06:37
fuente por usuario

votos
4

Utilice el código de abajo para ambos mapas de Google y Apple en 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)!)
        }
Respondida el 04/01/2017 a las 16:42
fuente por usuario

votos
2

Es possible.Use MKMapView Obtener coordenadas de la ubicación en la que ha tocado en el teléfono y el uso de las dos coordenadas solicitar el KML archivo desde el servicio web de Google, analizar el KML archivo (aplicación de ejemplo KML espectador en el sitio de desarrolladores) y visualizar las rutas .. ..
Gracias

Respondida el 29/06/2011 a las 07:23
fuente por usuario

votos
1

Primer mapa cheque Google se instala en el dispositivo o no

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

Añadir esquema de consulta en .Plist

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>
Respondida el 15/06/2017 a las 08:06
fuente por usuario

votos
1

Es posible mostrar la ruta en MapKit: Sólo tiene que utilizar MKPolyline

Consigo cadena de polilínea a partir de googleMapsApi. Me analizarlo en el servidor con php, y vuelvo cadena polilyne final a mi aplicación.

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];

Y mostrando:

- (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; 
}

Darle una oportunidad.

Respondida el 28/09/2012 a las 07:53
fuente por usuario

votos
1

Una solución sólida es crear un controlador de vista con una punta que incluye un UIWebView, y luego pasar el URL que ejerce el mapa Servicios / dirección de Google. De esta forma, mantener al usuario en la aplicación. Este enfoque no es suficiente cuando se tira de una página web, ya que el kit de Apple no es compatible zoom. Pero con OS4, al menos, el usuario puede hacer doble clic en el botón de inicio y volver a la aplicación.

Respondida el 07/05/2010 a las 00:55
fuente por usuario

votos
-1

Usted puede enviar el pasador caído a sí mismo y al abrir el enlace en el correo electrónico, se mostrará las coordenadas.

Respondida el 18/08/2011 a las 06:54
fuente por usuario

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