2015-05-29 50 views
5

我試圖讓cityGeolocation API。我剛開始學習一些JS和jQuery,所以這可能是一個基本的錯誤。地理位置 - 如何從長期獲得城市和緯度

$(document).ready(function(){ 
    function displayLocation(latitude,longitude){ 
     var request = new XMLHttpRequest(); 

     var method = 'GET'; 
     var url = 
      'http://maps.googleapis.com/maps/api/geocode/json?latlng=' 
      + latitude + ',' + longitude + '&sensor=true'; 
     var async = true; 

     request.open(method, url, async); 
     request.onreadystatechange = function(){ 
      if(request.readyState == 4 && request.status == 200){ 
       var data = JSON.parse(request.responseText); 
       var address = data.results[0]; 
       alert(address.city.short_name); 
      } 
     }; 
     request.send(); 
    }; 

    var successCallback = function(position){ 
     var x = position.coords.latitude; 
     var y = position.coords.longitude; 
     displayLocation(x,y); 
    }; 

    navigator.geolocation.getCurrentPosition(successCallback); 
}); 
+0

什麼是你的代碼實際上產生? – pete23

+0

在web開發工具的控制檯錯誤: 類型錯誤:address.city未定義 當我更改警告是: 警報(address.formatted_address); 返回全格式的地址,但我只需要城市名稱 – coder2222

+0

白標明的關鍵點 – Nullify

回答

1

這應該有助於

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script> 
    $(document).ready(function(){ 
     function displayLocation(latitude,longitude){ 
     var request = new XMLHttpRequest(); 

     var method = 'GET'; 
     var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude+'&sensor=true'; 
     var async = true; 

     request.open(method, url, async); 
     request.onreadystatechange = function(){ 
     if(request.readyState == 4 && request.status == 200){ 
     var data = JSON.parse(request.responseText); 
     alert(request.responseText); // check under which type your city is stored, later comment this line 
     var addressComponents = data.results[0].address_components; 
     for(i=0;i<addressComponents.length;i++){ 
      var types = addressComponents[i].types 
      //alert(types); 
      if(types=="locality,political"){ 
       alert(addressComponents[i].long_name); // this should be your city, depending on where you are 
      } 
      } 
     //alert(address.city.short_name); 
     } 
    }; 
    request.send(); 
}; 

var successCallback = function(position){ 
var x = position.coords.latitude; 
var y = position.coords.longitude; 
displayLocation(x,y); 
    }; 


navigator.geolocation.getCurrentPosition(successCallback); 

    }); 
</script> 
+0

謝謝,但它首先顯示的(可能)每一個可能的位置值,並單擊「確定」後列表就說明市。是因爲for循環嗎? – coder2222

+0

對不起,只要仔細閱讀代碼,注意你指出需要註釋掉的那一行!它工作正常,謝謝! – coder2222

相關問題