簡體   English   中英

將Google Maps數據導入iPhone

[英]Get Google Maps data into an iPhone

編寫iPhone應用程序時,我需要使用Google Maps api來獲取路線和路線。 不幸的是,Google Maps可以使用javascript。

任何想法如何做到這一點?

在執行此操作之前,您應該注意,在付費應用程序中使用地圖數據違反Google的條款和條件。

來自http://code.google.com/apis/maps/terms.html

9.1免費,公共可訪問您的Maps API實現。 通常,用戶必須免費訪問Maps API實施。 如果您不要求用戶付費,則可能會要求用戶登錄到您的Maps API實施。 除非您與Google簽訂了單獨的書面協議或獲得Google的書面許可,否則您的Maps API實施不得:

(a)要求付費訂閱或其他付費訪問受限; (b)僅在防火牆后面或僅在內部網絡上運行(在開發和測試階段除外)。

10.8除了在網絡瀏覽器中的實現方式之外,還可以使用Static Maps API;

我也包括了10.8節。 這是一個值得商one的問題,因為您可能會說UIWebView是一種瀏覽器,但是仍然要注意它。

如果您決定繼續使用它,則以下是一個很好的實現,可以橋接您所需的大多數代碼, http://code.google.com/p/iphone-google-maps-component/

您可以使用UIWebView來實現。 在使用JavaScript通過其Google Maps API訪問Google Maps服務時,您只需利用UIWebView方法即可:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

請注意,您將需要在代表腳本的字符串中轉義所有出現的雙引號。

例如,Maher Ali從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才能在應用商店上啟動您的應用,因此您最好開始使用MapKit API方法在無需WebView的情況下將Google Map嵌入應用中。 上面的解決方案是Google地圖曾經被“嵌入”到您的應用程序中的方式,但是現在您可以在OS 3.0中使用MapKit。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM