计算融合表中点之间的距离

Posted

技术标签:

【中文标题】计算融合表中点之间的距离【英文标题】:Calculate Distance between points in fusion tables 【发布时间】:2013-05-21 08:32:44 【问题描述】:

我的编程知识非常有限,我正在从事一个包括编程在内的大学项目。

我想做的是一张地图,它显示您当前的位置和回收点的位置。我已经做了当前位置部分,我使用融合表在地图上显示回收点。但我也想提供在您当前位置和回收点之间找到最短路线的选项。

所以它会做的是计算你当前位置和每个回收点之间的距离,并显示最短的那个。

现在我正在尝试理解 google maps api 教程,但我不知道这是否可能,使用融合表。所以我想知道是否有人知道如何做到这一点。

非常感谢!

<!DOCTYPE html>
<html>
<head>
<section id="wrapper">
Clique no botão "permitir" para deixar o browser encontrar a sua localização
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<article>
</article>
<script>


function success(position) 
  var mapcanvas = document.createElement('div');
  mapcanvas.id = 'mapcontainer';
  mapcanvas.style.height = '350px';
  mapcanvas.style.width = '450px';
  document.querySelector('article').appendChild(mapcanvas);

  var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

  var options = 
    zoom: 15,
    center: coords,
    mapTypeControl: false,
    navigationControlOptions: 
        style: google.maps.NavigationControlStyle.SMALL
    ,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  ;

  var map = new google.maps.Map(document.getElementById("mapcontainer"), options);
  var marker = new google.maps.Marker(
      position: coords,
      map: map,
      title:"You are here!"
  );

  var layer = new google.maps.FusionTablesLayer(
    query: 
    select: 'Coordenadas',
    from: '1CwMDrcxebjsb8sjG42rbGVAZB25Zi7CvaLJXOCM'
  ,


);
 layer.setMap(map)



if (navigator.geolocation) 
  navigator.geolocation.getCurrentPosition(success);
 else 
  error('Geo Location is not supported');

</script>
</section>

</head>
<body>

</body>

</html>

【问题讨论】:

表中存储了多少个“回收点”? 现在只有 15 个,但我还没有完成加分。我还在等待回收公司的信息。 【参考方案1】:

更新

您可以通过向Google Visualization API发送查询来检索最近的点坐标:

// Initiate the GViz query
var queryList = [];
queryList.push("SELECT Location FROM ");
queryList.push(tableId);
queryList.push(" ORDER BY ST_DISTANCE(Location, LATLNG(");
queryList.push(currentLat + "," + currentLng);
queryList.push(")) ");
queryList.push(" LIMIT 1");

var queryText = encodeURIComponent(queryList.join(''));
var query = new google.visualization.Query(
                         'http://www.google.com/fusiontables/gvizdata?tq=' +
                          queryText);

// Handling the result of nearest location query
query.send(function(response) 
    dataTable = response.getDataTable();

    // If there is any result
    if (dataTable && dataTable.getNumberOfRows()) 
        console.log("Nearest Point is: " + dataTable.getValue(0,0));

        // Result holds the coordinates of nearest point
        var result = dataTable.getValue(0,0).split(",");

        // Creates a Google Map LatLng from "result"
        var latlng = new google.maps.LatLng(result[0], result[1]);
        showRoute(latlng);
    

);

您可以查看实时示例Here。


您可以为此目的使用Distance Matrix Service。您只需从当前位置读取您的来源,并向Distance Matrix Service 发送每个回收点的请求。 Distance Matrix Sample也有一个例子。

var mylocation = new google.maps.LatLng(CURRENT_LOCATION_LAT, CURRENT_LOCATION_LNG);

// Destination by address
var destination1 = "Stockholm, Sweden";

// or destination by lat and lng
var destination2 = new google.maps.LatLng(50.087692, 14.421150);

// Sending request
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
  
    origins: [mylocation],
    destinations: [destination1, destination2],
    travelMode: google.maps.TravelMode.DRIVING, 
    avoidHighways: false,
    avoidTolls: false
  , callback);

function callback(response, status) 
  // See Parsing the Results for
  // the basics of a callback function.

您可以指定Travel Mode,它会相应地计算持续时间。

google.maps.TravelMode.DRIVING(默认)表示使用道路网络的标准行车路线。google.maps.TravelMode.BICYCLING 通过以下方式请求骑车路线自行车道和首选街道。google.maps.TravelMode.TRANSIT 请求通过公共交通路线的路线。 google.maps.TravelMode.WALKING 请求通过人行道和人行道的步行路线。

【讨论】:

嗨。感谢您的帮助(:有没有办法可以将我的融合表点放入目的地? @JGuerreiro,对不起,我无法访问我的电脑,我正在用手机上网,这真的很不方便。我一回来就回复你。 好的。再次感谢您。 @JGuerreiro,我已经更新了我的答案。看看,如果您还需要更多解释,请告诉我。 你真的很有帮助(:你能帮我做一件事吗?有没有办法知道最近点的坐标?我想使用 calcroute 函数向用户显示他们当前位置和那个点之间的路线。我可以这样做吗?

以上是关于计算融合表中点之间的距离的主要内容,如果未能解决你的问题,请参考以下文章

千题案例TypeScript获取两点之间的距离 | 中点 | 补点 | 向量 | 角度

arcgis中得融合问题,碎小图版之间的融合?

如何测量单独数据框中点之间的距离?

计算两点坐标距离与中点坐标

超融合与云计算的不同之处是什么?

渲染管线之深度测试与α融合—如何实现同时绘制不透明物体和透明物体