将Google地图数据导入iPhone

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Google地图数据导入iPhone相关的知识,希望对你有一定的参考价值。

编写iPhone应用程序,我需要使用Google Maps api来获取路线和路线。很遗憾,Google地图适用于javascript

知道怎么做吗?

答案

您可以使用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会引发异常。

另一答案

在此之前,您应该知道在付费应用程序中使用地图数据违反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而不是Web浏览器中的实现;

我还包括第10.8节。这是一个值得商榷的问题,因为你可以说UIWebView是一个浏览器但仍然知道它。

如果您决定继续使用它,以下是一个非常好的实现,它可以连接您需要的大部分代码,http://code.google.com/p/iphone-google-maps-component/

另一答案

由于您需要遵守OS 3.0 API才能在appstore上启动应用程序,因此您可以开始使用MapKit API方法在没有WebView的应用程序中嵌入Google Map。以上解决方案是Google地图过去在您的应用程序中“嵌入”的方式,但现在您可以将MapKit与OS 3.0一起使用。

以上是关于将Google地图数据导入iPhone的主要内容,如果未能解决你的问题,请参考以下文章

如何在片段中使用Google地图

将 imageCollection 从 Google 地球引擎导入到 QGIS - 如果代码和 crs 似乎没问题,为啥地图不会出现在画布上?

片段中的 Xamarin Android Google 地图错误

InfoWindow中的Android Google地图摘要自动更新

启动谷歌地图意图后返回活动

加载地图失败。在片段上联系 Google 服务器时出错