Как установить переменную вне области моей функции? - PullRequest
0 голосов
/ 16 июля 2011

Я пытаюсь использовать position.coords во внешней области за пределами функции, но я не могу переместить значения в одну глобальную переменную для вызова вне области функции.Я пробовал много решений, включая переменные окна.В этом случае геолокализация, новый google.maps.LatLng (iplat, iplong) является нулевым.Может кто-нибудь предложить способ поместить position.coords вне функции getLocation scope.

function getLocation(position)
{
    window.iplat = parseFloat(position.coords.latitude);
    window.iplong = parseFloat(position.coords.longitude);
}
function errorFunction(position) {
  alert('Error!');
}    
var geocoder;
var address;
var userlocation;
var curloc;

google.load("maps",'3',{other_params:'sensor=true'});
google.setOnLoadCallback(function()
{
    if (google.loader.ClientLocation)
    {
         geocoder = new google.maps.Geocoder();

        //html5    
        if(navigator.geolocation) {          
          navigator.geolocation.getCurrentPosition(getLocation);
        }
        else
        {
          curloc = google.loader.ClientLocation;
          iplat=parseFloat(curloc.latitude);
          iplong=parseFloat(curloc.longitude);          
        }
        var latlng = new google.maps.LatLng(iplat, iplong);
          if (geocoder) {
            geocoder.geocode({'latLng': latlng},function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
              if (results[1]){
                country_code=results[1]....;
              }
            } else {
              alert("Geocoder failed due to: " + status);
            }
            });
        }
        alert(country_code+":"+iplat+"||"+iplong); <--- NULL VALUES
      }

});

1 Ответ

1 голос
/ 16 июля 2011

Не совсем знаком с API Google, я предполагаю, что вы передаете переменные, которых нет в то время. navigator.geolocation.getCurrentPosition принимает аргументы обратного вызова (а также google.setOnLoadCallback). Чтобы убедиться, что все необходимые переменные присутствуют, вложите события в обратном направлении.

navigator.geolocation.getCurrentPosition(
  function(position){
    var iplat = parseFloat(position.coords.latitude),
        iplong = parseFloat(position.coords.longitude);

    alert(country_code+":"+iplat+"||"+iplong); //should work now!
    google.load("maps",'3',{other_params:'sensor=true'});
    google.setOnLoadCallback(function() { ... } ); // the rest of code
  }
);

Надеюсь, это поможет.

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