【问题标题】:Geolocation is so slow! what I'm doing wrong?地理定位太慢了!我做错了什么?
【发布时间】:2011-04-14 17:19:21
【问题描述】:

这是我在测试页面中使用的简单代码:但是要花很长时间才能找到地址……怎么会?我是不是做错了什么?

<script src="http://maps.google.com/maps?hl=it&amp;file=api&amp;v=2&amp;sensor=true&amp;key=*xxxxxx*" type="text/javascript"></script>
<script type="text/javascript">
    var map;
    var geocoder;

    function addAddressToMap(response) 
    {
      if (!response || response.Status.code != 200) 
      {
        alert("Sorry, we were unable to geocode that address");
      } 
      else 
      {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);

        document.getElementById('address').innerHTML = place.address;
      }
    }


    function searchGeolocation() 
    {
        if (navigator.geolocation) 
        {
            navigator.geolocation.getCurrentPosition(function(position) 
            {  
                geocoder = new GClientGeocoder();
                document.getElementById('latitude').innerHTML = position.coords.latitude;
                document.getElementById('longitude').innerHTML = position.coords.longitude;
                coordinates = position.coords.latitude+","+position.coords.longitude;
                geocoder.getLocations(coordinates, addAddressToMap);

            }); 
        }else
        {
            document.getElementById('latitude').innerHTML = "Unknown";
            document.getElementById('longitude').innerHTML = "Unknown";
            document.getElementById('address').innerHTML = "Unknown";
            alert("I'm sorry, but geolocation services are not supported by your browser.");    
        }
    }



</script>


<br/>
latitude = <div id="latitude">loading...</div>
<br/>
longitude = <div id="longitude">loading...</div>
<br/>
address = <div id="address">loading...</div>
<br/>


<script type="text/javascript">

    searchGeolocation();

</script>

【问题讨论】:

  • 需要多长时间?我假设您不会一次进行大量查找?
  • @Shawn:navigator.geolocation.getCurrentPosition 位:w3.org/TR/geolocation-API 是的,术语有点不准确,但很清楚是什么意思。
  • 如果 GPS 信号不清晰(高层建筑之间等),查找 GPS 位置可能需要一分钟时间

标签: javascript google-maps geolocation


【解决方案1】:

嗯 - 它实际上是在进行地理定位!

为了加快速度,请考虑提供额外参数以利用缓存结果和超时。

【讨论】:

【解决方案2】:

检查您的移动设备的位置服务模式。确保您的设备上的准确性处于“高”状态。高精度模式使用 GPS、WIFI 或移动网络来查找位置。

如果您选择低或仅 GPS 模式,则需要很长时间。

还可以使用地理位置选项并提供超时和缓存选项。

【讨论】:

  • 不应该是其他方式吗?高精度比低精度少对吗?
  • @Alpha - 高精度更准确,可以在移动设备上提供更频繁的更新。低精度的优点是可以延长电池寿命。此外,在三星 S6 等较新的 Android 手机上,我的更新速率约为 1 Hz。在较旧的手机上,频率较低。
  • @kashiraja 只是为了确保我做对了:帖子声称使用 GPS 很慢。它还声称使用GPS+移动网络+WiFi速度很快。那是对的吗?如果是这样,我想WiFi+移动网络首先提供不准确的结果,最后更新GPS。否则,我无法弄清楚为什么使用更多资源会产生更快的结果。
【解决方案3】:

我已经为此苦苦挣扎了几个小时,结果发现每个浏览器的结果都不同,也就是代码无法完全控制它,但您可以通过添加这些选项来取得一些进展到getlocation.getCurrentPosition函数调用:

enableHighAccuracy: false,
timeout: 5000,
maximumAge: Infinity

您可以阅读更多关于每个选项的含义here

【讨论】:

  • 这对我有帮助,tks bro
【解决方案4】:

您的几个呼叫可能需要几秒钟才能完成,例如 navigator.geolocation.getCurrentPosition 在 Safari 中对我来说最多需要 5 秒钟(工作时)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    相关资源
    最近更新 更多