是否可以使用谷歌地图在Android/iOS上创建转弯GPS导航应用程序?

mz8*_*z87 55 navigation gps android google-maps ios

今天我和一位客户谈过,他想在Android上构建一个简单的导航APP!

基本上我们可以使用谷歌地图,放置一些"我们的"标记来显示一些位置(餐馆,酒店等)..我们还需要向附近的用户朋友展示!

除了我在我自己的应用程序中找不到任何有关转弯导航实现的有用信息(无需切换到Google地图应用程序)之外,所有这些都可以在Android上的Google Maps API中实现.

有人可以简单澄清 - 是否可以在Android应用程序中使用谷歌地图来创建基于GPS的转向应用程序?

谢谢

小智 78

我同意上述的答案,但也有在谷歌地图API的隐私条款中的第10.4.c的关键条款这里.

它指出

没有导航.您不得将服务或内容用于或与(a)实时导航或路线指导相关; 或(b)自动或自动车辆控制.

因此,我想继续回答您的问题并说"不",在不违反其隐私政策的情况下,使用Google Maps API在Android上创建精细导航应用程序是不可能的.

  • @Nima我也看过这个,还有几个替代方案,其中Skobbler的替代方案看起来最有趣。您可以从http://developer.skobbler.com/support#download下载其SDK,它包括一个完整的演示项目,并带有逐个转向的示例。 (2认同)
  • 我发现它的文档很好,最好的替代方法之一是诺基亚的HERE地图,它们使用起来有点贵,但是如果您对开发人员友好,那么您肯定应该这么做。他们为每一个地图相关任务的每一端提供控制。所以我建议你去做。这里只有成本很重要 (2认同)
  • 优步是如何做到的呢? (2认同)

Drk*_*Str 29

编辑:在使用此答案之前,请阅读Tushar的答案

第一选择

如果您想在应用中完全实现导航,则必须结合使用Google Maps API和Google Directions API.他们可以免费使用,然后您必须支付api请求.(https://developers.google.com/maps/documentation/directions/)

第二选择

我只想将您要导航到的位置的纬度和经度发送到设备地图应用.以下是一些使用此方法启动的代码:

double lat = < latitude of the location you want to navigate to>

double lng = < longitude of the location you want to navigate to>     

String format = "geo:0,0?q=" + lat + "," + lng + "( Location title)";

Uri uri = Uri.parse(format); 


Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这将打开设备的地图应用程序并绘制位置,用户可以使用该应用程序执行他们想要的任何操作.

我会选择第二选项,实现起来非常容易.

  • 好的,但Google Directions API是否包含精细导航?像带有语音和箭头图像的GoogleMaps应用程序(左转掉头等)? (4认同)
  • 不,它给你的是一个很长的LatLng路点列表到你的目的地.你将拥有设计的声音和箭头,并填补你的自我.你必须在你自己的地图上绘制路标点.因此建议使用第二种选择.尝试一下,结果与你想要的非常相似. (3认同)
  • 在类似情况下,以及《 Google Maps API服务条款》第10.4 c iii条中的规定-“无导航。您不得将服务或内容用于(a)实时导航或路线指南;或(b) )自动或自主车辆控制。” 我怀疑选项2应该是唯一合法的答案,因为您使用的是内置导航的设备,而并不是“真正”使用您的应用程序。但是,不能完全确定我的解释是正确的。 (2认同)

Meh*_*kar 25

经过大量搜索后,我发现了两种带语音指令和箭头图像的逐向导航选项.

  1. skobbler或sk maps(http://developer.skobbler.com/)
  2. HERE地图(https://developer.here.com/)

HERE地图有点昂贵,不允许免费使用(只有90天的试用期).但它有很多优点,如:

  1. 清晰完美的文档:他们提供的文档清晰易懂,而且他们提供的演示应用程序也实现了所有必需的功能.所以你可以复制并粘贴很多东西.

  2. 开发人员友好:完全控制开发人员的地图(没有限制,你可以做任何你能想到的地图).

  3. 覆盖范围:导航不仅对某些特定国家而且对几乎所有国家都是明确和良好的.我在印度检查过它.Apple Maps不提供印度的路线,谷歌地图提供它,但从我的角度来看,HERE地图比谷歌更清晰甚至更好.

skobbler是好的,允许免费使用达到一个限制,但它并不适合所有国家(不覆盖印度达到水平).它也不像HERE Maps那样对开发人员友好.

  • @ still_dreaming_1:请再次阅读,第7节的第一行指定"应用程序不应包括任何其他用例或用途,而不是您的订阅计划中明确允许的用例",如果您尚未订阅它,那么它适用于你.但在购买订阅计划后,您可以使用它. (2认同)

小智 20

我偶然通过搜索转弯解决方案偶然发现了这个问题,我进一步搜索了一下,发现了这个有前途的javascript项目:

FFWDme.js - 是一个JavaScript工具包,旨在为移动浏览器提供交互式GPS行车路线

它是开源的.它是可配置的,但默认情况下它使用leaflet.js进行滑动映射,并使用可配置的Tile-server,因此您可以在开放街道地图上运行它.它还使用开源Graphhopper进行方向服务,但您可以添加自己的.

看起来有前途


Cli*_*int 7

即使在2018年7月价格更改后更新了ToS的Google Maps API ToS中,也不允许使用Google Maps API的逐行导航。

Google Maps的新ToS第3.2.4节(重点是我的):

(c)不得重新创建Google产品或功能。客户将不会使用服务来创建产品或服务,而该产品或服务的功能基本上类似于或重新创建其他Google产品或服务的功能。客户的产品或服务必须包含Google产品或服务以外的实质性,独立的价值和功能。例如,客户不得:(i)重新分发Google Maps Core服务或将其当作客户的服务散布;(ii)创建Google Maps Core Services,Google Maps或Google Maps移动应用程序或其功能的替代品;(iii)在清单或目录服务中使用Google Maps Core Services或创建或扩充广告产品;(iv)结合来自Directions API,Geolocation API和Android版Maps SDK的数据,以创建与Google Maps for Android移动应用提供的功能基本相似的实时导航功能。