我希望能够在Google地图上轻松存储和重新显示Google地图路线路线。让我们说从A点到B点,来自Google的DirectionsResult对象在路线上有100个点,我希望能够存储这条路线并保证下次我绘制它时方向会经过所有这些点
我看到人们尝试这样做的方法是序列化整个DirectionsResult对象并将其存储在数据库中。然后,当我们想要重绘路由时,将字符串重新发送,JSON.Parse它,然后尝试将其提供给DirectionsRenderer对象,该对象将在地图上呈现方向。这种方法有三个问题:
1)在序列化过程中丢失了类型信息,并且由于Google会对对象进行缩小,因此您无法使用类函数可靠地从对象中获取这些值。在最初序列化对象时,您需要首先使用数据访问器函数来构建“占位符”对象,然后在稍后解析序列化字符串时重建Google Maps对象。
2)这在法律上是可疑的。 Google Maps TOS表示您不应该永久存储数据,而且其他帖子似乎也违反了这一点。
3)对象可能很大,我序列化的一条路径超过64KB。
我还考虑过尝试从路径中存储几个点,然后使用Waypoints重建它。这种工作方式但是对于免费的API,你最多只能获得8分,所以这并不能保证超过这8分的准确性。此外,它然后绘制沿着路线的航点标记,我认为这可能会使用户感到困惑。
是否有可接受的方法来存储来自Google地图的确切路线,或者是否有针对性地设计API和TOS以防止这种情况发生?谢谢你的帮助。
答案 0 :(得分:2)
我认为这在法律上是可疑的。事实上,它几乎肯定违反了Terms of Service。正如您所指出的那样,除了提高性能之外,它是永久性存储(与10.1.3(b)相反);但它也是为了显示方向,而不是通过API获取它们(与10.1.1(a)相反)。谷歌没有轻松实现的事实意味着他们没有授权这个用例。事实上,TOS和API旨在使这样的存储变得困难,如果不是不可能的话。
存储起点和终点并且当你想再次显示它时让API运行出路线是不可接受的?
答案 1 :(得分:0)
看看www.mapmyrun.com他们正在使用谷歌地图api,他们肯定会持久保存数据。但是,他们不太可能使用免费的API。