点击html5地理定位当前位置,然后减去两点

html5 geolocation current position on clicks then subtract two points

本文关键字:两点 然后 html5 定位 位置 点击      更新时间:2023-09-26

我想编写一个页面,在那里我可以点击一个按钮,它会给出当前位置,然后是另一个,并获得新的药剂,然后告诉我我走了多远。我不需要计算地球的曲线或任何我没有走那么远的东西。哈哈。我也不想让它不断地移动和更新地理位置。这就是我所拥有的,我哪里做错了?它一直在读NaN。。。我自学成才,所以我可能有一些知识空白。。LOL thx提前帮助

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

我相信这不起作用的原因是.innerHTML不返回数值。

我建议在尝试计算差异之前,将返回的值(我相信是一个字符串)解析为一个合适的数值。

此外,你计算两点之间的距离似乎不正确。。。

这个问题的性质似乎相似。你可以参考批准答案中的脚本来计算总数。

然后,您可以将数值传递给该函数或类似的函数。

如果你真的不想考虑地球半径等因素,你可能想查找图表上两点之间距离的计算公式,并以类似的方式实现距离计算。

我的一些项目一直在这样做,所以下面的代码示例可以工作。以下代码调用在更新时传递了带有地理位置信息的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;
        };

源代码