【发布时间】:2011-01-04 11:45:06
【问题描述】:
我想构建一个严重依赖 Google 地图的应用。是否可以用 HTML/Javascript 编写本机 iPhone 应用程序?如果是这样,它可以从应用商店访问吗?否则,我怎么能在原生应用中包含 Google 地图?
【问题讨论】:
标签: google-maps iphone
我想构建一个严重依赖 Google 地图的应用。是否可以用 HTML/Javascript 编写本机 iPhone 应用程序?如果是这样,它可以从应用商店访问吗?否则,我怎么能在原生应用中包含 Google 地图?
【问题讨论】:
标签: google-maps iphone
还有Appcelerator Titanium,它看起来是一个使用网络技术开发iPhone 和Android 应用程序的好框架。他们在 C4 上对此做了一个有趣的演示。
但是,尝试在移动设备上“编写一次,随处运行”会导致您创建的东西在所有平台上都不如原生应用程序,因为您需要针对它们之间的最小公分母进行设计。
【讨论】:
解决您问题的两个部分:
可以写原生的吗 HTML/Javascript 中的 iPhone 应用程序 ?如果是这样,是否可以从 应用商店?
有一个名为NimbleKit 的框架允许您使用 HTML/JavaScript 编写应用程序,然后为您将其转换为 Objective-C/Cocoa。不过 NimbleKit 有几个问题:
另一种解决方案是在原生 iPhone 应用程序中嵌入 UIWebView(您必须使用一些 Objective-C/Cocoa 来执行此操作),然后将应用程序的其余部分编写为 iPhone 网络应用程序被加载到UIWebView。但是,我强烈建议您不要编写 iPhone 网络应用程序,无论是独立的还是嵌入到本机应用程序中。在撰写本文时,iPhone 网络应用程序有许多缺点,包括:
iPhone 网络应用程序在未来可能变得可行,但在这个时间点上,我会避开它们并使用原生技术(即 Objective-C/Cocoa)编写原生 iPhone 应用程序。
否则,我怎么能包含 Google 原生应用中的地图?
使用 Apple 的框架“MapKit”。有关如何使用 MapKit 的信息,请参阅 iPhone Application Programming Guide、this 教程和 this 教程中的 Displaying Maps and Annotations。
【讨论】:
是的,可以这样做。有一个很棒的开源项目叫做 PhoneGap http://phonegap.com/,它可以让你做到这一点。不仅如此,还部署在其他移动操作系统上,如 Android、黑莓等。
要进入应用商店,你需要注册成为苹果开发者,大约需要 100 美元。开发只能在mac上完成)Apple为您提供了许多软件工具,包括代码编辑器和iphone模拟器。
【讨论】:
您需要在 Objective-C 中构建一个包含 UIWebView 的框架应用程序。您可以使用 HTML/Javascript 填充 UIWebView。
在我看来,更好的选择是使用原生应用程序中的MapKit framework。 MapKit 让您可以使用完整的 Google Maps API 完成几乎所有可以做的事情,我认为原生应用在设备上的运行总是比 UIWebView 容器应用更好。
我在一些my apps 中使用过 MapKit,发现它易于使用且性能良好。在链接的示例中,我在页面模式下将 MkMapView 嵌入到 UIScrollView 中。我怀疑您是否可以轻松地使用 UIWebView 来实现这一点,我相信它不会表现得那么好。
【讨论】:
在 iPhone OS 3.0 和更高版本中,Apple 创建了一个自定义 Cocoa Touch 控件,允许开发人员将 Google 地图嵌入到本机应用程序中。地图支持多点触控,您可以使用自定义视图对地图进行注释、查找用户的当前位置以及做其他很酷的事情。
【讨论】:
不可能用 HTML/JS 编写原生 iPhone 应用,http://code.google.com/p/iphone-google-maps-component/ 可能有一些用处,或者你可以使用:
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[[NSURL alloc] initWithString: @"http://maps.google.com/maps?g=London"]];
请参阅How can I launch the Google Maps iPhone application from within my own native application? 了解更多信息。
【讨论】:
执行此操作的方法是将您的应用程序构建为常规网络应用程序 (javascript/css/html)。将其嵌入到本机 WebView 中。 WebView 是 iphone 应用程序的容器,这些应用程序旨在成为 Web 应用程序。这些应用程序的销售方式与应用商店中的其他应用程序相同。
【讨论】: