2012-12-13 22 views
1

我試圖從Google地理分佈表中的Geocodes位置(即:51.5665,-1.2410)獲取國家和城市。我發現了一個代碼來從一個國家的城市獲取緯度和經度,但我無法設法將其更改爲使用反向函數。Google文檔中的反向地理編碼

function onOpen() { 
    // Add the Geocode menu 
    SpreadsheetApp.getActiveSpreadsheet().addMenu("Geocoder", [{ 
     name: "Geocode addresses", 
     functionName: 'geocode' 
    }]); 
} 

function geocode() { 
    // Get the current spreadsheet, sheet, range and selected addresses 
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = SpreadsheetApp.getActiveRange(); 
    var addresses = range.getValues(); 

    // Determine the first row and column to geocode 
    var row = range.getRow(); 
    var column = range.getColumn(); 

    // Set default destination columns 
    var destination = new Array(); 
    destination[0] = column + 1; 
    destination[1] = column + 2; 

    // Prompt for latitude and longitude columns 
    var response = Browser.inputBox("Coordinate Columns", 
     "Please specify which columns should contain the latitude " + 
     "and longitude values [ie. 'C,D', 'A,F', etc]. Leave blank to " + 
     "insert new columns.", 
     Browser.Buttons.OK_CANCEL); 
    if (response == 'cancel') return; 
    if (response == '') 
     sheet.insertColumnsAfter(column, 2); 
    else { 
     var coord_columns = response.split(','); 
     destination[0] = sheet.getRange(coord_columns[0] + '1').getColumn(); 
     destination[1] = sheet.getRange(coord_columns[1] + '1').getColumn(); 
    } 

    // Initialize the geocoder and set loading status 
    var geocoder = Maps.newGeocoder(); 
    var count = range.getHeight(); 
    spreadsheet.toast(count + " addresses are currently being geocoded. " + 
         "Please wait.", "Loading...", -1); 

    // Iterate through addresses and geocode 
    for (i in addresses) { 
     var location = geocoder.geocode(
      addresses[i]).results[0].geometry.location; 
     sheet.getRange(row, destination[0]).setValue(location.lat); 
     sheet.getRange(row++, destination[1]).setValue(location.lng); 
     Utilities.sleep(200); 
    } 

    // Remove loading status 
    spreadsheet.toast("Geocoding is now complete.", "Finished", -1); 
} 

爲了更準確,我想找到一個腳本,需要緯度和經度,並在另一列和國家返回城市。

+0

大家好,歡迎堆棧溢出。正如[faq](http://stackoverflow.com/faq#signatures)中指出的那樣,簽名是不鼓勵的,所以如果/當你的移除,請不要冒犯。 – Jeff

回答

1

需要使用代替此該功能(下面):

變種位置= geocoder.geocode(地址[I])的結果[0] .geometry.location;

reverseGeocode(緯度,經度)

獲取給定地理點的近似位置。

 // Gets the address of a point in Times Square. 
 
    var response = Maps.newGeocoder().reverseGeocode(40.758577, -73.984464); 
 
    for (var i = 0; i < response.results.length; i++) { 
 
     var result = response.results[i]; 
 
     Logger.log('%s: %s, %s', result.formatted_address, result.geometry.location.lat, 
 
     result.geometry.location.lng); 
 
    }

https://developers.google.com/apps-script/reference/maps/geocoder#reverseGeocode(Number,Number)