Как открыть Google Maps для направления с использованием координат на iphone
Я использую UIMapView для отображения местоположений на iPhone. Я хочу сделать указания из текущего местоположения в интересующее место, я не думаю, что его можно использовать MapKit (но если это будет указано). Поэтому я открою приложение Google Maps или сафари, чтобы отобразить его.
Могу ли я это сделать, указав координаты из (текущего местоположения) в координаты (местоположение, представляющее интерес). Я имею эти долготы и широты. Или мне нужно использовать уличные адреса?
Если мне приходится использовать уличные адреса, могу ли я получить их по широте и долготе.
Ответы
Ответ 1
Это возможно. Используйте MKMapView. Получите координату местоположения, где вы прослушивали телефон, и используя две координаты, запросите файл KML из веб-службы google, проанализируйте KML (пример приложения KML viewer на сайте разработчика) и отображение маршрутов....
Спасибо вам
Ответ 2
Да, это невозможно с помощью MapKit. Вы можете попытаться сформировать запрос URL-адресов Google maps, который содержит как ваше текущее местоположение, так и пункт назначения, которые будут открываться в приложении Google maps с инструкциями.
Вот пример url:
http://maps.google.com/?saddr=34.052222,-118.243611&daddr=37.322778,-122.031944
Здесь вы можете реализовать это в своем коде:
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]];
Ответ 3
Используйте следующий код для карт google и apple в 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)!)
}
Ответ 4
Твердое решение - создать контроллер представления с NIB, который включает в себя UIWebView, а затем передать URL-адрес, который использует сервисы карты/направления Google. Таким образом, вы сохраняете пользователя в приложении. Этот подход недостаточен при подтягивании веб-страницы, потому что набор Apple не поддерживает масштабирование. Но с OS4, по крайней мере, пользователь может дважды щелкнуть кнопку "домой" и вернуться к приложению.
Ответ 5
В MapKit можно показать маршрут: просто используйте MKPolyline
Я получаю строку полилинии из googleMapsApi. Я разбираю его на сервере с php и возвращаю конечную полилинную строку в свое приложение.
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];
И показ:
- (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;
}
Попробуйте.
Ответ 6
Первая проверка карты google установлена на устройстве или нет
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://");
}
Добавить схему запроса в .plist
<key>LSApplicationQueriesSchemes</key>
<array>
<string>comgooglemaps</string>
</array>
Ответ 7
Вы можете отправить по электронной почте удаленный значок себе, и когда вы откроете ссылку по электронной почте, она покажет координаты.