Геолокация такая медленная! что я делаю не так? - PullRequest
24 голосов
/ 20 сентября 2010

это мой простой код, который я использую на тестовой странице: но для того, чтобы найти адрес, нужны годы ... как получилось?я делаю что-то не так?

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

Ответы [ 5 ]

9 голосов
/ 11 октября 2010

Ну, это на самом деле геолокация!

Чтобы ускорить его, рассмотрите возможность предоставления дополнительных параметров для использования кэшированных результатов и тайм-аута.

8 голосов
/ 20 сентября 2010

Я обнаружил, что скорости сильно различаются в зависимости от браузера.Я проверял свою геолокацию с помощью хрома, потому что это почти мгновенно.Firefox медлителен до чертиков (в большинстве случаев он даже не работает), а сафари идет вторымНадеюсь, со временем они исправят свою реализацию, так что это так же быстро, как в

Chrome
3 голосов
/ 29 декабря 2014

Проверьте сервис определения местоположения вашего мобильного устройства.Убедитесь, что точность находится в статусе High на вашем устройстве.В режиме высокой точности для определения местоположения используется GPS, WIFI или мобильная сеть.

Если вы выберете режим «Низкий» или «Только GPS», это займет вечность.

Также поиграйте с опцией геолокации и задайтепараметры таймаута и кэша.

0 голосов
/ 29 октября 2018

Я боролся с этим уже пару часов, и оказалось, что это разные результаты для каждого браузера, то есть то, что код не может полностью контролировать, но вы можете добиться некоторого прогресса, добавив эти параметрына getlocation.getCurrentPosition вызов функции:

enableHighAccuracy: false,
timeout: 5000,
maximumAge: Infinity

Подробнее о значении каждой опции вы можете прочитать здесь

0 голосов
/ 20 сентября 2010

Пара ваших звонков может занять несколько секунд, например, navigator.geolocation.getCurrentPosition занимает у меня до 5 секунд (при работе) в Safari.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...