【问题标题】:Reverse geocode in Google docsGoogle 文档中的反向地理编码
【发布时间】:2012-12-13 22:44:06
【问题描述】:

我正在尝试从 Google 电子表格中的地理编码位置(即:51.5665,-1.2410)获取国家和城市。我找到了一个代码,可以从一个国家的城市获取纬度和经度,但我无法设法将其更改为使用反向功能。

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);
}

更准确地说,我想找到一个脚本,它采用纬度和经度,并在一列中返回城市,在另一列中返回国家。

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。正如faq 中指出的那样,不鼓励签名,所以如果/当您的签名被删除时,请不要生气。

标签: google-api reverse-geocoding geocode


【解决方案1】:

你需要使用这个函数(如下)而不是这个:

变量位置 = geocoder.geocode(addresses[i]).results[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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    相关资源
    最近更新 更多