[英]Geolocation is so slow! what I'm doing wrong?
这是我在测试页面中使用的简单代码:但是找到地址需要很长时间......为什么会这样? 难道我做错了什么?
<script src="http://maps.google.com/maps?hl=it&file=api&v=2&sensor=true&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>
嗯 - 它实际上在做地理定位!
要加快速度,请考虑提供额外的参数以利用缓存结果和超时。
我发现根据浏览器的不同,速度会有很大差异。 我一直用铬测试我的地理定位,因为这几乎是即时的。 Firefox很慢(很多时候它甚至不起作用),而Safari则排在第二位。 希望他们能够及时修复它们的实现,因此它和chrome一样快
检查移动设备的位置服务模式。 确保准确度处于高位状态。 高精度模式使用GPS,WIFI或移动网络来查找位置。
如果您选择低或仅GPS模式,则需要永久。
还可以使用地理位置选项并提供超时和缓存选项。
您的几个调用可能需要几秒钟才能完成,例如navigator.geolocation.getCurrentPosition
在Safari中需要5秒钟(工作时)。
我现在已经苦苦挣扎了几个小时了,事实证明每个浏览器都有不同的结果,即代码无法完全控制,但你可以通过将这些选项添加到getlocation.getCurrentPosition
来取得一些进展getlocation.getCurrentPosition
函数调用:
enableHighAccuracy: false,
timeout: 5000,
maximumAge: Infinity
您可以在此处详细了解每个选项的含义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.