2009-06-02 68 views
0

对iPhone应用程序进行编程时,我需要使用Google Maps API获取路线和路线。不幸的是,谷歌地图围绕javascript工作。将Google地图数据导入iPhone

任何想法如何做到这一点?

回答

1

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

1

由于您需要遵守OS 3.0 API才能在appstore上启动您的应用程序,因此您可能会开始使用MapKit API方法在应用程序中嵌入Google Web Map,而无需使用WebView。上面的解决方案是谷歌地图过去是如何嵌入到你的应用中的,但现在你可以在OS 3.0上使用MapKit。

4

在做这件事之前,您应该知道,在付费应用程序中使用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/