javascript - Calculate Distance between points in fusion tables - Stack Overflow

My programming knowledge is very limited and I'm working on a college project that includes progra

My programming knowledge is very limited and I'm working on a college project that includes programming.

What I want to do is a map, that shows your current location and the locations of recycling points. I already did the current location part, and I used the fusion tables to display the recycling points on the map. But I also wanted to give the option of finding the shortest route between your current location and the the recycling points.

So what it would do was to calculate the distance between your current location and every recycling point, and show the shortest one.

Right now I'm trying to understand google maps api tutorials and I don't know if this is possible, using the fusion tables. So I wanted to know if anyone knows how to do this.

Thank you so much!

<!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=""></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>

My programming knowledge is very limited and I'm working on a college project that includes programming.

What I want to do is a map, that shows your current location and the locations of recycling points. I already did the current location part, and I used the fusion tables to display the recycling points on the map. But I also wanted to give the option of finding the shortest route between your current location and the the recycling points.

So what it would do was to calculate the distance between your current location and every recycling point, and show the shortest one.

Right now I'm trying to understand google maps api tutorials and I don't know if this is possible, using the fusion tables. So I wanted to know if anyone knows how to do this.

Thank you so much!

<!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./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>
Share Improve this question edited Jun 14, 2013 at 9:41 JGuerreiro asked May 26, 2013 at 7:15 JGuerreiroJGuerreiro 631 silver badge5 bronze badges 2
  • How many "recycling points" are stored in the table? – geocodezip Commented May 26, 2013 at 12:22
  • Right now, there's only 15 but I'm not done adding points. I'm still waiting for information from a recycling pany. – JGuerreiro Commented Jun 4, 2013 at 7:17
Add a ment  | 

1 Answer 1

Reset to default 6

UPDATE:

You may retrieve the nearest point coordinates by sending a query to 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./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);
    }

});

You may check the live example Here.


You may use Distance Matrix Service for that purpose. You just read your origin from your current location and send a request to Distance Matrix Service for each recycling points. There is also an example at 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.
}

You can specify the Travel Mode which putes the duration accordingly.

google.maps.TravelMode.DRIVING (Default) indicates standard driving directions using the road network.
google.maps.TravelMode.BICYCLING requests bicycling directions via bicycle paths & preferred streets.
google.maps.TravelMode.TRANSIT requests directions via public transit routes. google.maps.TravelMode.WALKING requests walking directions via pedestrian paths & sidewalks.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745141755a4613462.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信