ウェブページに地図へのリンクを表示する場合
<a href="http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398">Location</a>
標準の iPhone Safari ブラウザーでクリックすると、ネイティブの iOS6 Apple Maps アプリが開きます。アプリ内の UIWebView に同じ Web ページを表示し、リンクをクリックすると、デリゲート メソッド
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
が呼び出され、パラメータは
url=http://maps.apple.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
デリゲート メソッドが戻りYES
、UIWebView が先に進んでリンクを開く必要があることを示す場合、デリゲートへの新しい呼び出しがすぐにトリガーされ、今回はパラメーターが
url=http://maps.google.com/?q=Pricketts+Hill+Southampton+Hampshire+SO32+2JW&ll=50.913127,-1.191398
navigationType=UIWebViewNavigationTypeLinkClicked
これに戻るYES
と、予想どおり、UIWebView で maps.google.com Web ページが開きます。しかし、実際には iOS6 の Apple Maps アプリを起動したかったのです。iOS 6 で特定のアドレスを使用して iOS マップ アプリを起動する方法の行に沿って、URL からCLGeocoder
を作成することができますか? 、しかし、すべての従来の注釈を含むURLではなく、プレーンテキストが必要なようです。非常に詳細な解析ジョブです。また、モバイル サファリとは異なる方法で URL を解析すると、同じ最初のリンクから UIWebView または Safari のどちらを介してマップ アプリに到達したかによって、異なるマップ結果が表示される場合があります。MKMapItem
CLGeocoder
URL を解析してからジオコーディングすることなく、リンクから iOS6 Apple Maps アプリを開くために UIWebView を取得する方法はありますか?
余談ですが、デリゲート メソッドが maps.google.com の URL で呼び出された後、次のパラメーターで 2 回呼び出されます。
url=about:blank
navigationType=UIWebViewNavigationTypeOther
そして、それは最終的にディスプレイに影響を与えません。それが何であるか分かりますか?