将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/