Jak otworzyć Mapy Google dla kierunków z wykorzystaniem współrzędnych na iPhone

głosy
18

Używam UIMapView wyświetlać lokalizacje na iPhone. Chcę zrobić dojazdu od bieżącej lokalizacji do lokalizacji zainteresowania, nie sądzę, jego możliwe przy użyciu MapKit (ale jeśli jest to proszę poinformować) Więc będę otwierać albo aplikację Mapy Google lub Safari, aby go wyświetlić.

Można zrobić to przez podanie współrzędnych (od bieżącej lokalizacji) do Koordynuje (lokalizacja zainteresowania) Mam te długość i szerokość. Czy muszę używać adresów?

Jeśli trzeba używać adresów, mogę je od szerokości i długości geograficznej.

Utwórz 10/10/2009 o 14:58
źródło użytkownik
W innych językach...                            


7 odpowiedzi

głosy
75

Tak, to nie jest możliwe przy użyciu MapKit. Można próbować tworzyć mapy Google URL żądania, który zawiera zarówno bieżącą lokalizację i miejsce docelowe, które zostanie otwarte w aplikacji Google maps z kierunkach.

Oto przykład URL:

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

Oto jak można zaimplementować to w kodzie:

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]];
Odpowiedział 12/10/2009 o 06:37
źródło użytkownik

głosy
4

Użyj kodu miech na obu mapach Google i Apple w 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)!)
        }
Odpowiedział 04/01/2017 o 19:42
źródło użytkownik

głosy
2

Jest possible.Use MKMapView Get koordynować lokalizację, w której wykorzystany przez telefon i za pomocą dwóch współrzędnych zażądać KML plik z usługą internetową Google, analizowania KML plik (próbka aplikacja KML widza w miejscu dewelopera) i wyświetlenie trasy .. ..
Dziękuję

Odpowiedział 29/06/2011 o 07:23
źródło użytkownik

głosy
1

Najpierw należy sprawdzić google map jest zainstalowana w urządzeniu lub nie

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

Dodaj schematu zapytań w .plist

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>comgooglemaps</string>
</array>
Odpowiedział 15/06/2017 o 11:06
źródło użytkownik

głosy
1

Jest możliwe, aby pokazać trasę w MapKit: Wystarczy użyć MKPolyline

I dostać wielolinię ciąg z googleMapsApi. I analizować go na serwerze z php i wrócić ostatecznej polilyne ciąg do mojej aplikacji.

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

I pokazano:

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

Spróbuj.

Odpowiedział 28/09/2012 o 07:53
źródło użytkownik

głosy
1

Solidna rozwiązaniem jest stworzenie kontrolera widoku w stalówkę, która zawiera UIWebView, a następnie przekazać adres URL, który sprawuje usługi map / kierunek Google. W ten sposób można utrzymać użytkownika w aplikacji. Takie podejście nie jest wystarczające przy podjeżdżaniu stronę internetową, ponieważ zestaw Apple nie obsługują powiększanie. Ale z OS4, przynajmniej użytkownik może kliknąć dwukrotnie przycisk home i powrócić do aplikacji.

Odpowiedział 07/05/2010 o 00:55
źródło użytkownik

głosy
-1

możesz napisz upuszczony pin do siebie i po otwarciu łącza w wiadomości e-mail, to pokaże współrzędne.

Odpowiedział 18/08/2011 o 06:54
źródło użytkownik

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