# Calculate Distance between points in fusion tables

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>
<section id="wrapper">
Clique no botão "permitir" para deixar o browser encontrar a sua localização
<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,
},
};

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

query: {
from: '1CwMDrcxebjsb8sjG42rbGVAZB25Zi7CvaLJXOCM'
},

});
layer.setMap(map)
}

if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success);
} else {
error('Geo Location is not supported');
}
</script>
</section>

<body>

</body>

</html>
``````

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

var destination1 = "Stockholm, Sweden";

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

// Sending request
service.getDistanceMatrix(
{
origins: [mylocation],
destinations: [destination1, destination2],
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 computes the duration accordingly.