在一条街上报告点

时间:2014-02-05 15:19:28

标签: google-maps google-maps-api-3 maps gis google-fusion-tables

有几天我正在努力解决这个问题我无法解决。

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

我试图通过谷歌地图API来实现。

我将所有点都存储在融合表中,并且我能够构建一个具有适当风格的图层,但问题是这些点在地图上的真实街道上并不对应,显然他们必须这样做

我尝试的是使用DirectionsService,如下所示:(google maps geocoder - point on a street)我知道gps不能那么精确。

我现在尝试的方法是将我的所有点放在一个数组中(不使用融合表层,因为我不知道如何连接两个tehings)然后为每个点向DirectionsService发出请求(我知道)它非常慢,但是现在我需要它是精确的,如果你有建议它被很好地接受了)但是这样只有某些点被很好地表示,而其他点有来自服务的空响应并且根本没有报告。

有什么建议吗?

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

修改

说出提供的分数是完全错误的(但这不是我的工作,所以我只是把它们拿走了),现在有了新的点数,即使只有一些路标,服务也能正常工作。 该问题仍然部分地存在,即使更小,因此从融合台提供的点不是精确地在所有路线上的街道上。所以我仍然需要弄清楚如何将碎片放在一起,这意味着使用directionsService的路径,使用融合表层设置样式。 :)

1 个答案:

答案 0 :(得分:0)

使用过的点是完全错误的,现在有了正确的坐标集,融合表提供的路径几乎是完美的,在所有的街道上都很长,即使街道上还有一些不是真的。

所以,我现在需要弄清楚的是如何将fusionTable图层(样式)与directionsService(精确)放在一起。