将Google地图数据导入iPhone

问题描述 投票:0回答:3

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

知道怎么做吗?

javascript iphone google-maps maps
3个回答
1
投票

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


4
投票

在此之前,您应该知道在付费应用程序中使用地图数据违反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/


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.