众所周知,iOS 有一个地图问题。有的人以为,这个问题只不过是无法为消费者提供更加优质的地图服务而已。但实际上,这个问题的影响范围,除了消费者,还有应用开发者。Co.Labs 访问了多名开发者,从多个角度展开讨论。
Plane Finder 是一个可追踪航班信息的应用,去年团队在 WWDC 上看到 iOS 苹果地图的新 SDK(后正式称为 MapKit),兴奋不已。因为苹果地图的 SDK 一直缺乏某些主要功能,但从 WWDC 所公布的 SDK 来看,苹果注意到了问题。
Plane Finder 拥有 400 万用户,最近遭到用户的投诉,大多与地图相关:
许多人责怪我们的地图出现问题,它的定位常常不准确,弄错了城市或城镇,令他们找不到机场。之前我们把机场标记在跑道上,现在却跑到了农场里!用户对应用的评价从五颗星降至三颗星。20% 的邮件都在询问与此相关的问题。
苹果地图的问题还包括没办法搜到准确的位置,从 iOS 6 发布到现在,这个都没得到妥善的解决。Tube Tamer 的开发者 Bryce McKinlay 说:
苹果的精力集中在展示方面,比如 3D 视图啦,比如全程语音导航啦等等。这两个功能做得不错,但我不会花太多时间在上面。苹果在这些花哨的东西上花了大量精力,却忽视一些基本的功能。
(左:Google Maps 中:MapKit 右:苹果地图)Google 地图的图片质量将更高
显然,精确度对于依赖地理定位的应用来说,十分重要。,因此 Google 地图发布 iOS 版 SDK 后,许多团队开始使用 Google 的产品。
采用 Google 地图 SDK 的好处不止获得精确的地理定位。McKinlay 的应用需要“兴趣点”的数据,因此他希望转用 Google 地图的 SDK。这样,他就能一直使用 Google Places 的 API,获得数据。
从开发者角度来看,Google 地图 SDK 支持 3D 建筑,用户可以在应用中旋转或者倾斜,这是苹果 MapKit 所不支持的。它还提供了更好的混合视图以及卫星图片质量。
用户们已经习惯 Google 地图,采用 Google 地图 SDK,意味着用户不必学习,目之所及,皆是熟悉的按钮、路线、颜色等等。而且 Google 地图 SDK 还支持跨平台。应用开发者不必担心跨平台应用体验不一致的问题。
不过,开发者觉得 Google 地图 SDK 较为昂贵。以 Google Place API 为例,为开发者提供了提供了一天 10 万次请求的配额。看上去 Google 提供开发者的条件是比较优渥的,但实际上,一天 10 万次请求远远不够。尤其是一名用户可以发出多个请求的情况下,很快就达到 10 万次请求的数量。开发者不得不为申请更多配额而付费。免费应用的开发者有时候会觉得这笔钱特别刺眼。而 MapKit 则没有这样的限制,可以无限次请求。
此外,由于苹果地图是系统服务,因此它不受系统限制,应用里可储存更多的资料。而 Google 地图 SDK 只能保证应用储存 6 MB 的数据。
McKinlay 还说,Google 地图 SDK 的性能不如苹果的 MapKit,结果在缩放或者移动地图的时候,会感到明显的“卡顿”,如果移动地图的速度较快,兴趣点、地图上其它的图层的绘制也显得卡顿。在 iPhone 5 上也如此。
MapKit 比 Google 地图 SDK 更灵活的是,它允许显示更多的东西,比如表格、动画等等。MapKit 甚至允许开发者推荐自定义的内容,比如步行的路径、适合接吻的小径等等。此外,要运用 Google 地图 SDK,开发者必须先自行设定好图案,而 MapKit 则不必,开发者可以创建只包含地理位置、文字的内容。
(左:Google 地图 右:MapKit)MapKit 允许开发者添加更多的内容,但 Google 地图则不行
从开发的难易程度来看,MapKit 会显得更加简单——打开 Xcode,然后只要在 Interface Builder 中,拖放一下就可以了。MapKit 还意味着能与更多人交流,毕竟使用它的开发者数量众多。目前用 Google 地图 SDK 的开发者的数量尚属少数。
另外,MapKit 也提供了一些 Google 地图 SDK 所没有的特性,比如“Follow user location”以及“Follow with heading”——前者 MapKit 会提供一个按钮,自动跟踪用户的位置,同时还能根据指南针的方向来自动旋转地图。虽然 Google 地图 SDK 也能做到,但需要开发者耗费时间和力气,重新制造轮子。
MapKit 有一个缺点,那就是它的更新周期与 iOS 同步,因此更新周期需要一年的时间。Google 则不同,它可以随时更新 Google 地图 SDK,从去年 12 月上线以来,已经更新了三次。
以上比较了许多苹果的 MapKit 与 Google 地图 SDK 之间的优势和劣势。如果开发者既想用这个,又想用那个的话,其实也可以。比如 Plane Finder,集成了苹果地图和 Google 地图,用户可自由选择。
这听起来有些疯狂。但开发者解释,如果要让应用达到好用的程度,那么就必须这么做。首先,Google 地图受到限制,没办法做想做的事情,是保留苹果地图很好的理由。其次,Google 地图仍然是一个新框架,常常会碰到崩溃的问题,性能也有问题,而苹果地图则不会。因而,他在应用里显示两个地图。
(左:Google 地图 右:苹果地图)Google 地图的数据会更加全面、准确
对于初学者而言,用苹果地图可以更快上手,但都最后不可避免要使用 Google 地图。原因在于后者提供的信息更加丰富,搜索功能更加强大。不过,Google 地图 SDK 并非是为取代 MapKit 而设计,许多部分跟 Google 地图的 Javascript 以及 Android API 有紧密的联系——换言之,开发者需要通过重写、改写才能用得上 Google 地图 SDK 里的功能。
目前,从易用性等方面来看,苹果的 MapKit 比 Google 地图是 SDK 稍胜一筹,但 Google 更新的速度更快,因此未来胜负尚不可知。