Google Maps API a.lat不是函数错误

问题描述:

我创建的代码可以通过使用分隔符作为分隔符来协调CSV文件中的数据,并计算两个输入坐标之间的距离。但结果总是显示错误a.lat不是函数。我已经在网上冲浪有关这种特定的错误类型,似乎无法找到正确的解决方案,任何人都可以请帮我解决这个错误。Google Maps API a.lat不是函数错误

这里是我的坐标例如:

-6.168454914420734, 106.7574467 
-6.16897225004169, 106.7570443 

这里是我的代码:

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

你传入数字(实际上,字符串)到calcDistanc功能。它使用google.maps.geometry.spherical.computeDistanceBetween方法,该方法需要两个google.maps.LatLng对象(其中有一个.lat()方法)。您需要计算两个google.maps.LatLng对象之间的距离。

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

代码片段:

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

谢谢,它实际上确实很好。 – Kenken

+0

如果这回答了你的问题,请[接受它](http://meta.*.com/questions/5234/how-does-accepting-an-answer-work) – geocodezip