試左好耐, 想寫個 Method, 經緯度 轉 地址...

搞左個 google map 好耐, 依家去到要將 經緯度 轉番 地址.
我想轉出黎個 地址, 變做 variable, 去俾另一度用.
睇左好多網頁, 話要 callback , 但係唔識寫..
call codeLatLng() 呢個 Method, 佢都唔會 return 番個 地址.
  1. <script>
  2.         var latitude = 22.371845227361902;
  3.         var longitude = 114.1351547241211;               
  4.         var locationName;
  5.        
  6.         function codeLatLng(latitude, longitude){
  7.                 var glatlng =  new google.maps.LatLng(latitude, longitude);
  8.                 var geocoder = new google.maps.Geocoder();
  9.                        
  10.                 geocoder.geocode({'location': glatlng}, function(results){
  11.                         locationName = results[0].formatted_address;
  12.                         return locationName;
  13.                 });
  14.         }
  15.                
  16.         codeLatLng(latitude, longitude);
  17. </script>
複製代碼

本帖最後由 L.K. 於 2015-7-16 04:43 編輯

callback function return 唔到野出黎.
  1. <script type="text/javascript">
  2.         var latitude = 22.371845227361902;
  3.         var longitude = 114.1351547241211;
  4.         var locationName;

  5.         function codeLatLng(latitude, longitude, mycallback){
  6.             var glatlng =  new google.maps.LatLng(latitude, longitude);
  7.             var geocoder = new google.maps.Geocoder();
  8.             geocoder.geocode({'location': glatlng}, function(results){
  9.                 locationName = results[0].formatted_address;
  10.                 mycallback(locationName);
  11.             });
  12.         }

  13.         codeLatLng(latitude, longitude, function (locationName) {
  14.             console.log(locationName);
  15.         });

  16. </script>
複製代碼

TOP

呢個得唔得?

https://developers.google.com/ma ... =1#ReverseGeocoding
  1. https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=API_KEY
複製代碼
  1. {
  2.    "results" : [
  3.       {
  4.          "address_components" : [.....],
  5.          "formatted_address" : "277 Bedford Avenue, Brooklyn, NY 11211, USA",
  6.       }
  7. }
複製代碼

TOP

回覆 3# cambyliverson

cambyliverson兄,
請問全段code 應該點寫, 我想將covert番黎個地址變做 variable?
感激!!

佢呢個example, 個 results 例如 第05.行, 係咪叫我地自己作個地址落去?

TOP

  1. <!DOCTYPE HTML>
  2. <html lang="zh-Hant-HK">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>(WORK) Test geographic coordinates to addresses</title>

  6.         <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true">
  7.     </script>
  8.        
  9.         <script>
  10.                 var latitude = 22.371845227361902;
  11.                 var longitude = 114.1351547241211;
  12.                 var locationName;
  13.                
  14.                 function codeLatLng(latitude, longitude){       
  15.                         var glatlng =  new google.maps.LatLng(latitude, longitude);
  16.                         var geocoder = new google.maps.Geocoder();
  17.                        
  18.                         geocoder.geocode({'location': glatlng}, function(results){
  19.                                 locationName = results[0].formatted_address;
  20.                                 alert(locationName);
  21.                         });
  22.                 }
  23.                
  24.                 codeLatLng(latitude, longitude);
  25.         </script>
  26. </head>
  27. </html>
複製代碼
上面呢個係會出到 地址 的, 但係 locationName 呢個 variable 用唔番.
  1. <!DOCTYPE HTML>
  2. <html lang="zh-Hant-HK">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>(NOW WORK) Test geographic coordinates to addresses</title>

  6.         <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true">
  7.     </script>
  8.        
  9.         <script>
  10.                 var latitude = 22.371845227361902;
  11.                 var longitude = 114.1351547241211;
  12.                 var locationName;
  13.                
  14.                 function codeLatLng(latitude, longitude){       
  15.                         var glatlng =  new google.maps.LatLng(latitude, longitude);
  16.                         var geocoder = new google.maps.Geocoder();
  17.                        
  18.                         geocoder.geocode({'location': glatlng}, function(results){
  19.                                 return results[0].formatted_address;
  20.                         });
  21.                 }
  22.                
  23.                 locationName = codeLatLng(latitude, longitude);
  24.                 alert(locationName);
  25.         </script>
  26. </head>
  27. </html>
複製代碼
上面呢個唔 work 既, 會出 undefined, 但我想 location Name 呢個 variable 用得番.

參考資料:
Ref: Google maps Geocoding Service
https://developers.google.com/ma ... avascript/geocoding

Ref: Geocoder class
https://developers.google.com/ma ... /reference#Geocoder

TOP

回覆 5# mankowk


tested, work wor.
  1. <!DOCTYPE HTML>
  2. <html lang="zh-Hant-HK">
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>(WORK) Test geographic coordinates to addresses</title>

  6.         <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
  7.         
  8.         <script>
  9.                 var latitude = 22.371845227361902;
  10.                 var longitude = 114.1351547241211;
  11.                 var locationName;
  12.                
  13.                 function codeLatLng(latitude, longitude){        
  14.                         var glatlng =  new google.maps.LatLng(latitude, longitude);
  15.                         var geocoder = new google.maps.Geocoder();
  16.                         
  17.                         geocoder.geocode({'location': glatlng}, function(results){
  18.                                 locationName = results[0].formatted_address;
  19.                                 alert(locationName);
  20.                         });
  21.                 }
  22.                
  23.                 codeLatLng(latitude, longitude);
  24.                                
  25.                                 function test(){
  26.                                          alert("locationName = "+locationName);
  27.                                 }
  28.         </script>
  29.                
  30.                 <a href="#" onclick="test()">load location name</a>
  31. </head>
  32. </html>
複製代碼

TOP

you should know this part of program will load in other feed
  1. geocoder.geocode({'location': glatlng}, function(results){
  2.                                 locationName = results[0].formatted_address;
  3.                                 alert(locationName);
  4.                         });
複製代碼
so, "alert(locationName);" in bottom will called before geocoder get the address.

TOP