地图上的汽车跟踪
Car tracking on map
我有一个网页,上面有一张地图。我正在使用 Leaflet maps,编程是在 javascript 中完成的。每 10-15 秒我收到一个 json,里面有 N(最大 N=3000)辆汽车的 gps 坐标。所以我的目标是在地图上显示这些汽车,并让它们在城市街道上流畅地移动。
我现在做了什么:
每辆车在地图上表示为 Leaflet moving marker。每次我收到新坐标时,我都会将每个标记从它的旧位置移动到新位置,只需编写如下内容:listOfCars[i].marker.moveTo(coord, 10000);
它只是在新点和旧点之间绘制一条看不见的线,并沿着这条线移动标记。这里我有一个问题:
我应该如何处理道路转弯?当汽车即将(例如)向右转时,它会发送坐标,10 秒后(汽车转弯并继续运动)并再次发送坐标。所以在地图上,标记从旧点(汽车即将转弯时)直接移动到新点(我们在汽车转弯并向前移动一点后得到的),穿过房屋、公园和其他汽车刚刚经过的地方得不到(就像直角三角形的斜边)。我的问题:
- 我应该如何处理这个 'turn problem'?
- 在地图上跟踪汽车的应用程序(如优步)的开发人员如何处理此类问题?
- 有什么方法可以优化我的 'web site' 的性能吗?似乎如果我在某些计算机和手机上增加地图上的标记数量(例如最多 5000 个),它的性能会非常慢。
感谢帮助!
据我所知,您在 google 地图 api 上寻找的东西叫做 "Snap To Road",但它需要付出一定的代价,因为它是高级功能的一部分。
https://developers.google.com/maps/documentation/roads/snap#requests
否则你将不得不加快你的 GPS 点来避开那些奇怪的角落。
编辑:
要优化您的地图,请不要显示 5000 个点。相反,使用折线,偶尔只显示一个点。你只是想显示太多点数。
我忘了提到,在许多 gps 设备上,您可以使用角度作为触发器来发送另一个位置,而不仅仅是使用普通的 x 秒。所以假设你告诉你的 gps 设备每 15 秒触发一次,如果设备转动 30 度或更多则触发另一次,这应该会让你的角度更清晰。
我有一个网页,上面有一张地图。我正在使用 Leaflet maps,编程是在 javascript 中完成的。每 10-15 秒我收到一个 json,里面有 N(最大 N=3000)辆汽车的 gps 坐标。所以我的目标是在地图上显示这些汽车,并让它们在城市街道上流畅地移动。
我现在做了什么:
每辆车在地图上表示为 Leaflet moving marker。每次我收到新坐标时,我都会将每个标记从它的旧位置移动到新位置,只需编写如下内容:listOfCars[i].marker.moveTo(coord, 10000);
它只是在新点和旧点之间绘制一条看不见的线,并沿着这条线移动标记。这里我有一个问题:
我应该如何处理道路转弯?当汽车即将(例如)向右转时,它会发送坐标,10 秒后(汽车转弯并继续运动)并再次发送坐标。所以在地图上,标记从旧点(汽车即将转弯时)直接移动到新点(我们在汽车转弯并向前移动一点后得到的),穿过房屋、公园和其他汽车刚刚经过的地方得不到(就像直角三角形的斜边)。我的问题:
- 我应该如何处理这个 'turn problem'?
- 在地图上跟踪汽车的应用程序(如优步)的开发人员如何处理此类问题?
- 有什么方法可以优化我的 'web site' 的性能吗?似乎如果我在某些计算机和手机上增加地图上的标记数量(例如最多 5000 个),它的性能会非常慢。
感谢帮助!
据我所知,您在 google 地图 api 上寻找的东西叫做 "Snap To Road",但它需要付出一定的代价,因为它是高级功能的一部分。
https://developers.google.com/maps/documentation/roads/snap#requests
否则你将不得不加快你的 GPS 点来避开那些奇怪的角落。
编辑: 要优化您的地图,请不要显示 5000 个点。相反,使用折线,偶尔只显示一个点。你只是想显示太多点数。
我忘了提到,在许多 gps 设备上,您可以使用角度作为触发器来发送另一个位置,而不仅仅是使用普通的 x 秒。所以假设你告诉你的 gps 设备每 15 秒触发一次,如果设备转动 30 度或更多则触发另一次,这应该会让你的角度更清晰。