5

Meine Programmierkenntnisse sind sehr begrenzt und ich arbeite an einem College-Projekt, das Programmierung umfasst.Berechnen der Entfernung zwischen Punkten in Fusion Tabellen

Was ich tun möchte, ist eine Karte, die Ihren aktuellen Standort und die Standorte von Recycling-Punkten zeigt. Ich habe den aktuellen Standort bereits erstellt und die Fusionstabelle verwendet, um die Recyclingpunkte auf der Karte anzuzeigen. Ich wollte Ihnen aber auch die Möglichkeit geben, die kürzeste Route zwischen Ihrem aktuellen Standort und den Recyclingstellen zu finden.

Also, was es tun würde, war die Entfernung zwischen Ihrem aktuellen Standort und jedem Recyclingpunkt zu berechnen, und zeigen Sie die kürzeste.

Im Moment versuche ich Google Maps API-Tutorials zu verstehen, und ich weiß nicht, ob dies möglich ist, mit den Fusionstabellen. Also wollte ich wissen, ob jemand weiß, wie das geht.

Vielen Dank!

<!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> 
+0

Wie viele "Recyclingpunkte" sind in der Tabelle gespeichert? – geocodezip

+0

Im Moment sind es nur 15, aber ich habe noch keine Punkte hinzugefügt. Ich warte immer noch auf Informationen von einem Recyclingunternehmen. – JGuerreiro

Antwort

5

UPDATE:

Sie können den nächsten Punkt abrufen Koordinaten durch eine Abfrage an Google Visualization API Senden:

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

}); 

Sie die Here anschauliches Beispiel überprüfen können.


Sie können Distance Matrix Service für diesen Zweck verwenden. Sie haben Ihre Herkunft von Ihrem aktuellen Standort abgelesen und für jede Recyclingstelle eine Anfrage an Distance Matrix Service gesendet. Es gibt auch ein Beispiel bei 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. 
} 

Sie können die Travel Mode angeben, die entsprechend der Dauer berechnet.

google.maps.TravelMode.DRIVING (Standard) zeigt Standardfahrrichtungen unter Verwendung des Straßennetzes.
google.maps.TravelMode.BICYCLING Anfragen Radwege Richtungen über Fahrradwege & bevorzugte Straßen.
google.maps.TravelMode.TRANSIT fragt über öffentliche Verkehrsmittel an. google.maps.TravelMode.WALKING Anfragen Fußwege über Fußwege & Bürgersteige.

+0

Hii. Vielen Dank für Ihre Hilfe (: Gibt es eine Möglichkeit, meine Fusion Tabellen Punkte in die Destinationen zu setzen? – JGuerreiro

+0

@JGuerreiro, Sorry, ich habe keinen Zugriff auf meinen Computer und ich surfe SO mit meinem Handy, das ist wirklich Ich werde Ihnen antworten, sobald ich zurück bin. –

+0

Ok. Vielen Dank noch einmal. – JGuerreiro