热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MapKit和Google地图SDK比较!

众所周知,iOS有一个地图问题。有的人以为,这个问题只不过是无法为消费者提供更加优质的地图服务而已。但实际上,这个问题的影响范围,除了消费者,还有应用开发者。Co.Labs访问了多名开发者

众所周知,iOS 有一个地图问题。有的人以为,这个问题只不过是无法为消费者提供更加优质的地图服务而已。但实际上,这个问题的影响范围,除了消费者,还有应用开发者。Co.Labs 访问了多名开发者,从多个角度展开讨论。

Plane Finder 是一个可追踪航班信息的应用,去年团队在 WWDC 上看到 iOS 苹果地图的新 SDK(后正式称为 MapKit),兴奋不已。因为苹果地图的 SDK 一直缺乏某些主要功能,但从 WWDC 所公布的 SDK 来看,苹果注意到了问题。

Plane Finder 拥有 400 万用户,最近遭到用户的投诉,大多与地图相关:

许多人责怪我们的地图出现问题,它的定位常常不准确,弄错了城市或城镇,令他们找不到机场。之前我们把机场标记在跑道上,现在却跑到了农场里!用户对应用的评价从五颗星降至三颗星。20% 的邮件都在询问与此相关的问题。

苹果地图的问题还包括没办法搜到准确的位置,从 iOS 6 发布到现在,这个都没得到妥善的解决。Tube Tamer 的开发者 Bryce McKinlay 说:

苹果的精力集中在展示方面,比如 3D 视图啦,比如全程语音导航啦等等。这两个功能做得不错,但我不会花太多时间在上面。苹果在这些花哨的东西上花了大量精力,却忽视一些基本的功能。

3006725-inline-image

(左: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 则不必,开发者可以创建只包含地理位置、文字的内容。

3006725-inline-tiled-overlays

(左: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 地图仍然是一个新框架,常常会碰到崩溃的问题,性能也有问题,而苹果地图则不会。因而,他在应用里显示两个地图。

3006725-inline-detailed-coastline

(左:Google 地图   右:苹果地图)Google 地图的数据会更加全面、准确

对于初学者而言,用苹果地图可以更快上手,但都最后不可避免要使用 Google 地图。原因在于后者提供的信息更加丰富,搜索功能更加强大。不过,Google 地图 SDK 并非是为取代 MapKit 而设计,许多部分跟 Google 地图的 Javascript 以及 Android API 有紧密的联系——换言之,开发者需要通过重写、改写才能用得上 Google 地图 SDK 里的功能。

目前,从易用性等方面来看,苹果的 MapKit 比 Google 地图是 SDK 稍胜一筹,但 Google 更新的速度更快,因此未来胜负尚不可知。


推荐阅读
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 在尝试加载支持推送通知的iOS应用程序的Ad Hoc构建时,遇到了‘no valid aps-environment entitlement found for application’的错误提示。本文将探讨此错误的原因及多种可能的解决方案。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 在iOS开发过程中,当开发团队使用多台Mac设备时,可能会遇到无法继续申请新证书的问题。本文介绍了如何通过导出.p12文件来解决这一问题,并确保团队成员能够在不同设备上共享同一个证书。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 本文介绍了一种通过设置主题(Theme)来实现快速启动的Android引导页,并详细说明了如何避免因不同屏幕分辨率导致的图片拉伸问题。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 在学习了Splay树的基本查找功能后,可能会觉得它与普通的二叉查找树没有太大的区别,仅仅是通过splay操作减少了时间开销。然而,Splay树之所以被誉为“序列之王”,主要在于其强大的区间操作能力。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 题目概述:Sereja 拥有一个由 n 个整数组成的数组 a1, a2, ..., an。他计划执行 m 项操作,这些操作包括更新数组中的特定元素、增加数组中所有元素的值,以及查询数组中的特定元素。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • [附源码]计算机毕业设计JAVAjsp医药管理信息系统
    [附源码]计算机毕业设计JAVAjsp医药管理信息系统项目运行环境配置:Jdk1.8Tomcat7.0MysqlHBuilderX(Webstor ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • Android Studio: 修改应用包名的详细步骤
    本文详细介绍了在Android Studio中如何修改应用的包名,包括具体的操作步骤和注意事项。这对于需要更改包名以适应不同需求的开发者非常有用。 ... [详细]
author-avatar
血玉残阳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有