(iOS / iPhone / XCode) UIWebView не откроет карты Google в интегрированном приложении Maps

#iphone #xcode #google-maps #uiwebview #maps

#iPhone #xcode #google-карты #uiwebview #Карты

Вопрос:

Мое приложение, которое я разрабатываю, требует, чтобы пользователь мог проложить маршрут к определенному местоположению. У меня есть представление, настроенное для вызова определенной веб-страницы с моего сервера с помощью формы, в которой они вводят свой адрес и предоставляют ссылку на Карты Google.

При отправке этой страницы через Safari — она отлично работает! Пользователь вводит свой адрес, нажимает «Перейти», и они попадают в приложение Maps и направляются к месту назначения. При использовании экземпляра UIWebView в моем приложении в окне загружаются мобильные карты Google.

До сих пор я пытался отредактировать идентификатор агента браузера и использовать метод Swizzling (ни то, ни другое не сработало). Экземпляр MapView в моем приложении не подходит из-за пользовательского интерфейса, иначе я бы использовал этот подход.

В принципе, я хочу, чтобы ссылка на карты Google в моем UIWebView открывалась в приложении Maps так же, как в Safari.

Идеи?


Пользователь нажимает кнопку hbgView, чтобы вызвать hbgViewController, используя этот код:

 -(IBAction)hbgButton:(id)sender{
    hbgViewController *hbgView=[[hbgViewController alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:hbgView animated:YES];
}
  

Затем я загружаю сеанс UIWebView с формой, используя этот код:

 - (void)viewDidLoad
{
    [super viewDidLoad];
    [svcWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"...com/mobile/map/hbg.html"]]];
}
  

Код формы для hbg.html документ выглядит следующим образом:

 <script>
function redirect()
{
var baseUrl = "http://maps.google.com/maps?saddr="
var suffix = "amp;daddr=endaddressamp;hl=en";
document.gmform.action=baseUrl document.getElementById('url').value suffix;
}
</script>
<form name="gmform" method="post" onsubmit="redirect()">
<input type="text" id="url">
<input type="submit" value="Go">
</form>
  

Комментарии:

1. Опубликуйте какой-нибудь код, чтобы было более понятно, что именно вы хотите сделать.

2. Вы используете форму только в своем приложении?

3. Да — только в этом приложении. Страница предназначена только для использования в этом приложении.

Ответ №1:

 -(IBAction)hbgdirButton:(id)sender{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://maps.google.com/maps?q=harrisburg paamp;hl=en"]];
}
  

http://maps.google.com/maps?q= должен быть префикс ссылки

Комментарии:

1. Работает ли это в webview, хотя, согласно вашему первоначальному вопросу?

Ответ №2:

Чтобы убедить ваше приложение открыть ссылку в приложении maps, вам нужно будет использовать метод openURL, немного похожий на этот;

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://maps.google.com?saddr=xxxamp;daddr=yyyamp;hl=en"]]
  

Я делаю это в одном из своих приложений, и это отлично работает. Очевидно, что теперь вы перешли к приложению maps и не можете вернуться к своему собственному, так что это работает только для очень специфических случаев использования.

Комментарии:

1. Единственное, что меня беспокоит в этом, это то, что мне нужно загрузить исходный UIWebView, чтобы пользователь мог отправить информацию об адресе со страницы, указанной на моем сервере, это загрузит это при загрузке страницы и удалит из моего приложения.

2. Я не думаю, что у вас есть выбор, если вы хотите предлагать маршруты. Правила и условия Google Maps довольно строги в этом отношении. Вы могли бы обратиться к стороннему поставщику — cloudmade делает карты с открытым исходным кодом для iphone, которые вы можете встроить в свое приложение, и я вижу, что теперь они также делают указания — так что, возможно, это правильный путь.

3. Просто чтобы уточнить, я хочу, чтобы указания были встроены в приложение — я хочу, чтобы эта ссылка открывала приложение Maps.