2015-12-01 43 views
1

我想编写一个页面,在这里我可以点击一个按钮,它给人的当前位置,然后另一个,并获得新的药水,然后告诉我,多远我已经走了。我不需要计算地球的曲线或任何我没有走过那么远的LOL。我也不想让它不断地更新地理位置。这是我的,我哪里错了?它一直读取NaN的...我是自学的,所以我可能有一些知识gaps..LOL THX提前帮助HTML5地理定位当前位置,然后减去两点

<html> 
<body> 

<p>Click the button to get your coordinates.</p> 

<button onclick="getLocation()">start</button> 
<BR><br><br> 
<button onclick="getLocation2()">stop</button> 
<button onclick="tods()">total</button> 
<BR><br><br> 
<p id="demo">something1</p> 
<BR> 
<p id="demo2">something2</p> 

<script> 
     var x = document.getElementById("demo"); 

     function getLocation() { 
      if (navigator.geolocation) { 
       navigator.geolocation.getCurrentPosition(showPosition); 
      } else { 
     x.innerHTML = "Geolocation is not supported by this browser."; 
      } 
      } 

     function showPosition(position) { 
      x.innerHTML = "Latitude: " + position.coords.latitude + 
     "<br>Longitude: " + position.coords.longitude; 
     } 

     var y = document.getElementById("demo2"); 

    function getLocation2() { 
if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(showPosition2); 
} else { 
    y.innerHTML = "Geolocation is not supported by this browser."; 
} 
} 

function showPosition2(position2) { 
y.innerHTML = "Latitude: " + position2.coords.latitude + 
"<br>Longitude: " + position2.coords.longitude; 
} 
</script> 
<script> 
    function tods() { 
    var z = x.innerHTML - y.innerHTML; 
     document.getElementById("total").innerHTML = z; 
    } 
     </script> 
    <p id="total">something 3</p> 
     </body> 
     </html> 
+0

我认为这具有与.innerHTML要不要返回一个数值。我相信它会返回一个字符串? – OscuroAA

回答

0

我认为这是不工作的原因是因为.innerHTML不返回一个数值。

我会试图计算差值之前,建议解析返回值(一个字符串,我相信)为适当的数值。

另外你计算得到两点之间的距离显示不正确......

This question似乎在本质上是相似。您可以参考已批准答案中的脚本来计算总数。

你会然后在数值传递给,或类似的功能。

如果你真的不想在地球半径因子等,你可能想要查找公式了图上计算两个点之间的距离,并实施以类似的方式你的距离计算。

0

一直在这样做了我的一些项目,所以下面的代码示例都在工作。通过FUNC参数与地理定位信息,下面的代码调用更新时:

var setLocationUpdates = function(func) { 
    var onUpdate = function(position) 
    { 
     if(!position) 
      func(null); 
     else 
     { 
      var lat = parseFloat((position.coords) ? new String(position.coords.latitude) : position.x); 
      var lng = parseFloat((position.coords) ? new String(position.coords.longitude) : position.y); 

      func({ 
       loc: [lat, lng], 
       accuracy: position.coords.accuracy, 
       altitude: position.coords.altitude, 
       speed: position.coords.speed, 
       altitudeAccuracy: position.coords.altitudeAccuracy, 
       heading: position.coords.heading, 
       date: new Date() 
      }); 
     } 
    }; 

    if(navigator.geolocation) 
     navigator.geolocation.watchPosition( 
      onUpdate, 
      function(error) { }, 
      { 
      maximumAge: 10000, 
      timeout: 5000, 
      enableHighAccuracy: true 
     }); 
}; 

为了计算公里的距离使用下列内容:

var distance = function(point) 
     { 
      var toRad = function(value) { return value * Math.PI/180; }; 

      if(!(point instanceof mod.LatLng)) 
       throw "GeospatialJS.LatLng object expected"; 

      var R = 6371; // km 
      var dLat = toRad((point.lat()-this.lat())); 
      var dLon = toRad((point.lng()-this.lng())); 
      var lat1 = toRad(this.lat()); 
      var lat2 = toRad(point.lat()); 

      var a = Math.sin(dLat/2) * Math.sin(dLat/2) + 
        Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
      var d = R * c; 
      return d; 
     }; 

Source code

+0

谢谢你,我会考虑修改,而不是使用inner.html,但我不想使用手表位置.......我在考虑使用本地存储或东西按住地图点则数据呼叫并获得差异,所以我可以看到我走了多远。但我不想让它像手表位置一样运行.--尽管如此,谢谢你的回应 – pablo