地图上的汽车追踪

时间:2016-05-19 13:04:05

标签: javascript gps leaflet tracking marker

我有一个网页,上面有地图。我正在使用Leaflet maps,编程是在javascript中完成的。每10-15秒我收到一个json,其中gps坐标为N(最大N = 3000)辆。因此,我的目标是在地图上显示这些汽车,并使他们沿着城市街道的运动顺利制作。

我现在做了什么: 每辆车在地图上都显示为Leaflet moving marker。每当我收到新的坐标时,我只需写下类似于listOfCars[i].marker.moveTo(coord, 10000);的内容,将每个标记从它的旧位置移动到新位置。 它只是在新旧点之间绘制一条不可见的线,并沿着这条线移动标记。在这里我有一个问题:
我该怎样处理路上的转弯?当汽车即将转向(例如)右侧时,它会发送它的坐标,10秒钟(汽车转弯并继续它的运动)并再次发送它的坐标。因此,在地图上,标记从旧点(当汽车即将转弯时)直接移动到新点(我们在汽车转向并向前移动一点后得到)穿过房屋,公园和其他汽车的地方不能得到(它就像一个直角三角形的斜边)。我的问题:

  • 我应该如何解决这个问题'?
  • 在地图上跟踪汽车的应用程序(如Uber)的开发人员如何处理此类问题?
  • 有没有办法优化我的网站的性能? ?看起来如果我在某些计算机和手机上增加地图上的标记数量(例如最多5000个),它的执行速度会非常慢。

寻求帮助!

1 个答案:

答案 0 :(得分:4)

据我所知,谷歌地图api上你所寻找的是“Snap To Road”,但它是有代价的,因为它是高级功能的一部分。

https://developers.google.com/maps/documentation/roads/snap#requests

否则你必须更快地拿走你的GPS点,以避免那些奇怪的角落。

编辑: 要优化地图,请不要显示5000点。相反,使用折线,并且偶尔只显示一个点。你只是试图显示太多的分数。

我忘了提到在许多gps设备上你可以使用角度作为触发器来发送另一个位置而不是仅使用普通的x秒。所以,假设你告诉你的gps设备每15秒触发一次,如果设备转动30度或更长时间再触发一次,这会让你的角度变得更清晰。