谷歌地图 - 大致位于道路的位置

时间:2014-03-30 07:51:06

标签: objective-c google-maps routes

我需要在道路上跟踪汽车的项目,我在下面的道路上,我需要为车辆添加标记。我在车内设置了GPS设备,我从设备中获取坐标,之间,GPS设备位置精度不是很好(<10M),如何设置路标上的标记地图吗?

enter image description here

3 个答案:

答案 0 :(得分:7)

Google Maps Tracks API提供面向车辆/资产跟踪的功能。对于您的特定用例,您可以从数据源记录crumbs(甚至指定测量的精度!),然后retrieve the collected crumbs snapped to the nearest road

要仅获取当前位置,只需为minTimestampmaxTimestamp选择合适的范围即可。如果您想完全避免存储历史记录,您应该能够重复使用固定时间戳:

  

如果面包屑的时间戳与已经存在的面包屑相同   指定的实体,现有的crumb将被覆盖   新的一个。 (参见“Recording crumbs”)

答案 1 :(得分:1)

使用路线服务。获取从兴趣点到兴趣点的行车路线。应该在路上。

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
    });
      }
});

答案 2 :(得分:1)

我建议使用OSM(OpenStreet Maps)数据来获取离线路线,这意味着您可以在不使用数据且不受Google限制的情况下将标记捕捉到道路。最新的地图也可以每周下载:搜索planet.osm
我正在使用GraphHopper,它使用OSM,我的android项目可以捕捉到道路,它并不完美,因为它有更多的道路Goolge地图,并且Marker可能会被放置在Google Maps没有的道路上。 所以基本上,检查GraphHopper,下载示例项目,下载地图,阅读GitHub自述文件的说明如何设置项目并使用他们的路由计算来检索最近道路的坐标,而无需绘制标记或折线。检索坐标并将其传递给您的应用程序并将标记放在接收的坐标上。