#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.