Opening native google maps in Xcode

前端 未结 1 1872
天命终不由人
天命终不由人 2020-12-15 02:31

Hi I have an iPhone application using maps and locations.

I would like the user to be able to press a button that gives turn by turn directions to that location. I

相关标签:
1条回答
  • 2020-12-15 02:44

    Sure, it's possible - you've just got to tell the system to open a google maps link, with parameters for the start and end address set.

    You might want to try using the following google maps URL:

    http://maps.google.com/maps?saddr=x,y&daddr=x,y

    So you can see the two parameters are saddr (start address) and daddr (destination address). You set these to a pair of coordinates, separated by a comma.

    Here is a bit of code I wrote that will take the user from their current location to a specific location (hardcoded in my case).

    This is the core location delegate method which is called once their location has been established.

    - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
        if (newLocation.horizontalAccuracy == oldLocation.horizontalAccuracy) {
            [self.locationManager stopUpdatingLocation];
            CLLocationCoordinate2D coords = newLocation.coordinate;
            NSString *stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps?saddr=%g,%g&daddr=50.967222,-2.153611", coords.latitude, coords.longitude];
            NSURL *url = [NSURL URLWithString:stringURL];
            [[UIApplication sharedApplication] openURL:url];
        }
    }
    

    To set this all up, you could add a property of a location manager to your controller, and then when you want to set it up (say in viewDidLoad) intialise it like this:

    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    [self.locationManager startUpdatingLocation];
    

    Calling [[UIApplication sharedApplication] openUrl:url]; will send it to the system's URL handler, which will detect it's a google maps link, and open it up in maps.

    Hope that helps

    0 讨论(0)
提交回复
热议问题