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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…