我设法使用以下内容在Web视图中显示URL(maps.Google.com):
[[mapVIEw mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://maps.Google.com"]]];
然而,这不是我正在寻找的结果.理想情况下,我想要一个类似于iPhoto的地图视图.从this教程我知道你必须在服务器上有一个HTML文件才能使工作正常.由于我的应用程序是本地OS X应用程序(不涉及任何服务器),我想知道是否有任何方式以不同的方式执行此 *** 作并在应用程序的de目录中具有HTML本地(不确定这将如何与所需的一起工作与Google绑定的Google Maps API密钥)?
编辑:
我已经解决了部分问题.您实际上可以在本地存储HTML文件(我把它放在我项目的“Supporting files”文件夹中).然后,您可以使用以下代码访问此文件:
Nsstring *pagePath;NSBundle *aBundle = [NSBundle mainBundle];pagePath = [aBundle pathForResource:@"test2" ofType:@"HTML"];// make a file: URL out of the pathNSURL *pageURL = [NSURL fileURLWithPath: pagePath];
下一步是使用以下内容显示地图:
[[mapVIEw mainFrame] loadRequest:[NSURLRequest requestWithURL: pageURL]];
这将在我的WebVIEw中显示地图.作为起点,我使用了Google Maps API教程here中的示例.此特定示例显示了一个以瑞典斯德哥尔摩为中心的地图.
我还没有设法解决的一件事是如何访问显示地图的JavaScript函数(在上面的例子中,这将是使用body onload调用的initialize()函数).对于我的情况,我想调整这个函数来接受两个参数,一个经度和一个纬度,然后从显示地图的Objective-C对象中调用它.根据Apple的文档,可以使用可通过WebVIEw实例访问的WebScriptObject实例从Objective-C中调用JavaScript:
ID wso = [mapVIEw windowscriptObject];
然后使用callWebScriptMethod:withArguments:一个应该能够执行JavaScript函数.但是,如果我删除body标签的onload并使用windowscriptInstance调用JavaScript initialize()函数,则地图不会显示.有人知道我做错了什么吗?
解决方法 最后一块拼图是正确的时机.在完成WebVIEw加载之前,您无法使用JavaScript做任何事情.通过向您的控制器发送webVIEw:dIDFinishLoadForFrame:将此信号发送回您的控制器.查看WebFrameLoadDelegate协议参考 here上的Apple文档.您的控制器应实现其中一些方法,具体取决于所需的行为(协议方法是可选的).运行此方法后,WebVIEw即可开始工作,您可以在其中访问JavaScript函数:
- (voID) webVIEw:(WebVIEw *) webVIEw dIDFinishLoadForFrame:(WebFrame *) frame { NSArray *args = [NSArray arrayWithObjects: [NSNumber numberWithfloat: 59.325225],[NSNumber numberWithfloat:18.0700],nil]; [[webVIEw windowscriptObject] callWebScriptMethod:@"initialize" withArguments:args];}
一个很好的参考点是我解剖的CallJS sample app,以使整个工作起作用.
总结以上是内存溢出为你收集整理的如何将Google Maps地图添加到OS X Cocoa应用程序全部内容,希望文章能够帮你解决如何将Google Maps地图添加到OS X Cocoa应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)