将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的主要内容,如果未能解决你的问题,请参考以下文章
将 imageCollection 从 Google 地球引擎导入到 QGIS - 如果代码和 crs 似乎没问题,为啥地图不会出现在画布上?
片段中的 Xamarin Android Google 地图错误