對iPhone應用程序進行編程時,我需要使用Google Maps API獲取路線和路線。不幸的是,谷歌地圖圍繞javascript工作。將Google地圖數據導入iPhone
任何想法如何做到這一點?
對iPhone應用程序進行編程時,我需要使用Google Maps API獲取路線和路線。不幸的是,谷歌地圖圍繞javascript工作。將Google地圖數據導入iPhone
任何想法如何做到這一點?
你可以通過使用UIWebView來實現這一點。當涉及到使用JavaScript訪問通過谷歌地圖API的谷歌地圖服務,您只需把UIWebView的方法的優點:
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
請注意,你需要在字符串中逃脫代表你的腳本,所有的根據需要發生雙引號。
作爲一個例子,下面的方法,來中心的地圖需要的,是從iPhone SDK編程的第12章拍攝,由馬赫阿里:
-(void) centerMap:(NSUInteger) index{
CLLocation *loc = [locations objectAtIndex:index];
NSString *js =
[NSString stringWithFormat:
@"var map = new GMap2(document.getElementById(\"map_canvas\"));"
"map.setMapType(G_HYBRID_MAP);"
"map.setCenter(new GLatLng(%lf, %lf), 18);"
"map.panTo(map.getCenter());"
"map.openInfoWindow(map.getCenter(),"
"document.createTextNode(\"Loc: (%i/%i), Time: %@\"));",
[loc coordinate].latitude, [loc coordinate].longitude,
index+1, [locations count],
[loc timestamp]];
[webView stringByEvaluatingJavaScriptFromString:js];
}
此外,牢記從Apple文檔以下:
對於每個頂級入口點,JavaScript執行時間被限制爲10秒。如果您的腳本執行超過10秒,Safari將停止執行腳本。這可能發生在代碼中的隨機位置,因此可能會導致意想不到的後果。由於JavaScript執行可能導致主線程阻塞,因此此限制是強制的,因此當腳本運行時,用戶無法與網頁交互。
JavaScript分配也被限制爲10 MB。如果您超過JavaScript的總內存分配限制,Safari會引發異常。
由於您需要遵守OS 3.0 API才能在appstore上啓動您的應用程序,因此您可能會開始使用MapKit API方法在應用程序中嵌入Google Web Map,而無需使用WebView。上面的解決方案是谷歌地圖過去是如何嵌入到你的應用中的,但現在你可以在OS 3.0上使用MapKit。
在做這件事之前,您應該知道,在付費應用程序中使用Google地圖數據違反了Google的條款和條件。
從http://code.google.com/apis/maps/terms.html
9.1免費,公衆瞭解你的地圖API實現。您的Maps API 實施必須通常爲 ,用戶無需付費即可訪問。 如果您的 不需要用戶支付費用,則您可能會要求用戶登錄到 您的Maps API實施。除非 你已經與谷歌或 獲得谷歌的書面許可單獨 書面協議, 您的地圖API實現必須:
(一)需要付費訂閱 或其他基於收費的訪問限制;或者(b)僅在防火牆 後或僅在內部網絡(在開發和測試 階段期間除 之外)操作。
10。8使用靜態地圖API,而不是在Web瀏覽器的實現中;
我也包含了第10.8節。這是一個有爭議的問題,因爲你可能會認爲UIWebView是一個瀏覽器,但仍然意識到它。
如果你決定繼續使用它,下面是一個很好的實現,它橋接你需要的大部分代碼,http://code.google.com/p/iphone-google-maps-component/