2016-04-15 9 views
2

Ich habe einen Code erstellt, der Daten aus einer CSV-Datei mithilfe einer Teilung als Trennzeichen koordinieren und den Abstand zwischen zwei Eingabekoordinaten berechnen kann. Aber das Ergebnis zeigt immer den Fehler a.lat ist keine Funktion. Ich surfe bereits im Internet über diesen speziellen Fehlertyp und kann anscheinend nicht die richtige Lösung finden, kann mir bitte jemand mit diesem Fehler helfen.Google Maps API a.lat ist kein Funktionsfehler

Hier ist mein Koordinaten Beispiel:

-6.168454914420734, 106.7574467 
-6.16897225004169, 106.7570443 

Und hier ist mein Code:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://maps.googleapis.com/maps/api/js"></script> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script> 

<script> 
function calcDistance(p1, p2){ 
    return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2)/1000).toFixed(2); 
} 

function encodeLatLngPolygon(array) { 

var polyOptions = { 
strokeColor: '#000000', 
strokeOpacity: 1.0, 
strokeWeight: 3 
    } 
    poly = new google.maps.Polyline(polyOptions); 

var path = poly.getPath(); 

for(var i=0;i<array.length;i++) { 
    var xyz = new google.maps.LatLng(parseFloat(array[i][0]).toFixed(2), parseFloat(array[i][1]).toFixed(2)); 
    path.push(xyz);    

} 

var code = google.maps.geometry.encoding.encodePath(path) 

return code; 
} 

function readTextFile(file) 
{ 
    var rawFile = new XMLHttpRequest(); 
    rawFile.open("GET", file, true); 
    rawFile.onreadystatechange = function() 
    { 
     if(rawFile.readyState === 4) 
     { 
      if(rawFile.status === 200 || rawFile.status == 0) 
      { 
       var allText = rawFile.responseText; 

       var byline = allText.split('\n'); 

       for(var e=0;e<4;e++){ 
       var coor=byline[e].split(','); 
       alert(calcDistance(coor[0],coor[1])); 

       } 



      } 
     } 
    } 
    rawFile.send(null); 
} 

function initialize() { 
    var mapProp = { 
    center:new google.maps.LatLng(51.508742,-0.120850), 
    zoom:5, 
    mapTypeId:google.maps.MapTypeId.ROADMAP 
    }; 
    var map=new google.maps.Map(document.getElementById("googleMap"),mapProp); 

    readTextFile("DaerahG.csv"); 


} 
google.maps.event.addDomListener(window, 'load', initialize); 
</script> 
<title>kenny</title> 
</head> 

<body> 
<div id="googleMap" style="width:1000px;height:700px; float:left;"></div> 

</body> 

</html> 

Antwort

6

Sie Zahlen sind vorbei (eigentlich Strings) in die calcDistanc Funktion. Es verwendet die google.maps.geometry.spherical.computeDistanceBetween Methode, die zwei google.maps.LatLng Objekte erwartet (die eine .lat() Methode haben). Sie müssen den Abstand zwischen zwei google.maps.LatLng-Objekten berechnen.

function calcDistance(p1, p2){ 
    return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2)/1000).toFixed(2); 
} 

for(var e=0;e<4;e++){ 
    var coor=byline[e].split(','); 
    alert(calcDistance(coor[0],coor[1])); 
} 

Code-Schnipsel:

function calcDistance(p1, p2) { 
 
    return (google.maps.geometry.spherical.computeDistanceBetween(p1, p2)/1000).toFixed(2); 
 
} 
 

 
var allText = "-6.168454914420734, 106.7574467\n-6.16897225004169, 106.7570443"; 
 
var byline = allText.split('\n'); 
 
var path = []; 
 
for (var e = 0; e < byline.length; e++) { 
 
    var coor = byline[e].split(','); 
 
    path.push(new google.maps.LatLng(coor[0], coor[1])); 
 
    if (path.length > 1) 
 
    alert(calcDistance(path[0], path[1])); 
 
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry"></script>

+0

Danke, es ist eigentlich wirklich gut funktioniert. – Kenken

+0

Wenn dies Ihre Frage beantwortet, bitte [akzeptieren] (http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work) – geocodezip