我正在使用XCode 4開發可可應用程序。其中一個窗口具有選項卡視圖。其中一個標籤應該顯示某個位置的Google地圖。我添加了一個WebView(WebKit框架)到選項卡,並將其定義爲插座,以便我可以使用窗口控制器來操作它。如何將谷歌地圖地圖添加到OS X可可應用程序
我設法使用,以顯示Web視圖中的URL(maps.google.com)以下:
[[mapView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://maps.google.com"]]];
然而,這不是我要找的結果。理想情況下,我希望有一個類似於iPhoto的地圖視圖。從this教程我明白你將不得不在服務器上有一個HTML文件來使事情工作。由於我的應用程序是本地OS X應用程序(不涉及任何服務器),所以我想知道是否有任何方法可以做到這一點,並在應用程序的de目錄中擁有HTML本地(不確定這將如何與所需Google Maps API密鑰與URL綁定)?
編輯:
我解決了這一部分。你實際上可以在本地存儲一個HTML文件(我把它放在我的項目的「Supporting Files」文件夾中)。然後,您可以使用下面的代碼訪問此文件:
NSString *pagePath;
NSBundle *aBundle = [NSBundle mainBundle];
pagePath = [aBundle pathForResource:@"test2" ofType:@"html"];
// make a file: URL out of the path
NSURL *pageURL = [NSURL fileURLWithPath: pagePath];
下一步是使用顯示在地圖下面:
[[mapView mainFrame] loadRequest:[NSURLRequest requestWithURL: pageURL]];
這顯示我的WebView裏面的地圖。作爲起點,我使用了Google Maps API教程here中的示例。這個特殊的例子顯示了一張集中在瑞典斯德哥爾摩的地圖
我還沒有設法解決的一件事是如何訪問顯示地圖的Javascript函數(在上面的例子中是使用body onload調用的initialize()函數)。對於我的情況,我想調整這個函數來接受兩個參數,一個是經度和緯度,然後從顯示地圖的Objective-C對象調用它。據蘋果公司的文檔,可以使用WebScriptObject的一個實例,它是通過的WebView實例訪問從Objective-C的範圍內調用JavaScript:
id wso = [mapView windowScriptObject];
然後使用callWebScriptMethod:withArguments:一個人應該能夠執行一個Javascript函數。但是,如果我刪除body標籤的onload並使用WindowScriptInstance調用Javascript initialize()函數,則不會顯示地圖。有人知道我做錯了什麼?