Google maps 报告街道上的交通点

Google maps 报告街道上的交通点,google-maps,google-maps-api-3,maps,gis,google-fusion-tables,Google Maps,Google Maps Api 3,Maps,Gis,Google Fusion Tables,这几天我一直在努力解决这个我无法解决的问题 我有一个Android应用程序发送给我一定数量的坐标;每个坐标都有一个与之相关的值,我需要做的是在地图上报告这些点,根据这个值可视化不同的标记颜色 我正试图通过谷歌地图API来实现这一点 我把所有的点都存储在一个融合表中,我可以用适当的样式构建一个图层,但问题是这些点在地图上的真实街道上并不对应,显然它们是必要的 我正在尝试的是使用导航服务,正如这里所建议的:()我知道gps不能如此精确 我现在尝试的方法是将我的所有点放在一个数组中(不使用fusion

这几天我一直在努力解决这个我无法解决的问题

我有一个Android应用程序发送给我一定数量的坐标;每个坐标都有一个与之相关的值,我需要做的是在地图上报告这些点,根据这个值可视化不同的标记颜色

我正试图通过谷歌地图API来实现这一点

我把所有的点都存储在一个融合表中,我可以用适当的样式构建一个图层,但问题是这些点在地图上的真实街道上并不对应,显然它们是必要的

我正在尝试的是使用导航服务,正如这里所建议的:()我知道gps不能如此精确

我现在尝试的方法是将我的所有点放在一个数组中(不使用fusion table层,因为我不知道如何连接两个Tehing),然后针对每个点向DirectionService发出请求(我知道这非常慢,但现在我需要精确,如果你有建议,它会被广泛接受)但通过这种方式,只有某些点得到了很好的表示,而另一些点则有来自服务的空响应,并且根本没有报告

有什么建议吗

var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
  directionsDisplay = new google.maps.DirectionsRenderer();
  var urbino = new google.maps.LatLng(43.72333292, 12.63552457);
  var mapOptions = {
    zoom:10,
    center: urbino
  }
  map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
  directionsDisplay.setMap(map);
}

function calcRoute() {
  var start, end;

  var waypts = [new google.maps.LatLng(43.72333292,12.63552457), new google.maps.LatLng(43.72333292,12.63552457), new google.maps.LatLng(43.72333292,12.63552457), new google.maps.LatLng(43.72333292,12.63552457)............];


console.log(waypts.length);

    $.each(waypts, function(index){
        if(index < waypts.length -1){
            var request = {
              origin:waypts[index],
              destination:waypts[index+1],
              travelMode: google.maps.TravelMode.DRIVING    
            };


            directionsService.route(request, function(response, status) {
                console.log(index);
                console.log(response);
                if (status == google.maps.DirectionsStatus.OK) {
                  directionsDisplay.setDirections(response);
                  console.log('ok');
                }
                else{
                  console.log('non ok');
                }
            });
        }
  });
}

google.maps.event.addDomListener(window, 'load', initialize);

$(document).ready(function(){

  calcRoute();
});
var方向显示;
var directionsService=new google.maps.directionsService();
var映射;
函数初始化(){
directionsDisplay=new google.maps.DirectionsRenderer();
var urbino=new google.maps.LatLng(43.72333292,12.63552457);
变量映射选项={
缩放:10,
中心:乌尔比诺
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
方向显示.setMap(地图);
}
函数calcRoute(){
var开始、结束;
var waypts=[new google.maps.LatLng(43.72333292,12.63552457),new google.maps.LatLng(43.72333292,12.63552457),new google.maps.LatLng(43.72333292,12.63552457),new google.maps.LatLng(43.72333292,12.63552457)……];
控制台日志(路径长度);
$。每个(路径、功能(索引){
如果(索引<路径长度-1){
var请求={
来源:waypts[索引],
目的地:waypts[索引+1],
travelMode:google.maps.travelMode.DRIVING
};
路由(请求、功能(响应、状态){
控制台日志(索引);
控制台日志(响应);
if(status==google.maps.directionstatus.OK){
方向显示。设置方向(响应);
console.log('ok');
}
否则{
console.log('non-ok');
}
});
}
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
$(文档).ready(函数(){
calcRoute();
});
编辑

结果显示,提供的点完全错误(但这不是我的工作,所以我只是接受了它们),现在有了新的点方向服务,即使只有一些航路点也可以正常工作。
问题仍然部分存在,即使小得多,因为从fusion table提供的点并不完全在所有路线的街道上。因此,我仍然需要弄清楚如何将各个部分组合在一起,这意味着使用DirectionService的路由,并使用fusion表层进行样式化

使用的点是完全错误的,现在有了正确的坐标集,fusion Table提供的路径几乎是完美的,在所有的街道上,即使有些点不是真正在街道上


所以,我现在必须弄清楚的是如何将fusionTable层(样式化)与DirectionService(精确化)结合起来

一个建议是将数据固定在Fusionable中,以反映道路上的点。您可以使用FusionTables UI手动移动点。数据多久更新一次?比如说,我们正处于原型阶段,对于第一个样本,我们讨论的是380个点,最终数据将每天更新更多次,所以我认为这是不可行的。谢谢你的建议:)也许可以问这个问题?在PostGIS(PostgreSQL+GIS)数据库中将街道表示为线字符串记录,然后查询最靠近给定点的线字符串上的点。谢谢,我将尽快查看。我对地理信息系统完全陌生,似乎不太容易进入;)我也在尝试CartoDB,我希望有更多的运气:)