【发布时间】:2014-05-09 14:42:27
【问题描述】:
我有一个项目,我需要跟踪道路上的汽车,我有下面的道路,我需要为车辆放置一个标记。我在车辆中设置了 GPS 设备,并从设备中获取坐标,GPS 设备定位精度不是很好(
【问题讨论】:
标签: objective-c google-maps routes
我有一个项目,我需要跟踪道路上的汽车,我有下面的道路,我需要为车辆放置一个标记。我在车辆中设置了 GPS 设备,并从设备中获取坐标,GPS 设备定位精度不是很好(
【问题讨论】:
标签: objective-c google-maps routes
使用路线服务。获取从兴趣点到兴趣点的行车路线。应该在路上。
var directionsService = new google.maps.DirectionsService();
directionsService.route({origin:homeLatlng, destination:homeLatlng, travelMode: google.maps.DirectionsTravelMode.DRIVING}, function(response, status) {
if (status == google.maps.DirectionsStatus.OK)
{
var homeMarker = new google.maps.Marker({
position: response.routes[0].legs[0].start_location,
map: map,
vtitle: "Check this cool location",
icon: image,
shadow: shadow
});
} else {
var homeMarker = new google.maps.Marker({
position: homeLatlng,
map: map,
title: "Check this cool location",
icon: image,
shadow: shadow
});
}
});
【讨论】:
Google Maps Tracks API 提供针对车辆/资产跟踪的功能。对于您的特定用例,您可以从您的数据源记录crumbs(甚至指定您的测量精度!)然后retrieve the collected crumbs snapped to the nearest road。
要只获取当前位置,只需为minTimestamp 和maxTimestamp 选择一个合适的范围。如果您想完全避免存储历史记录,您应该能够仅重用固定时间戳:
如果一个 crumb 的时间戳与一个已经存在的 crumb 相同 指定的实体,现有的面包屑将被覆盖 新的一个。 (见“Recording crumbs”)
【讨论】:
我建议使用 OSM(OpenStreet Maps)数据来获取离线路线,这意味着您可以在不使用数据且不受 Google 限制的情况下将标记捕捉到道路。每周也可下载最新地图:搜索 planet.osm
我正在使用使用 OSM 的 GraphHopper 来让我的 android 项目捕捉到道路,这并不完美,因为它拥有比 Goolge Maps 更多的道路,并且标记可能会放置在 Google Maps 没有的道路上。
所以基本上,检查 GraphHopper,下载示例项目,下载地图,阅读 GitHub 自述文件上的说明如何设置项目并使用他们的路线计算来检索最近道路的坐标,而无需绘制标记或折线。检索坐标并将它们传递给您的应用程序并在收到的坐标上放置标记。
【讨论】: