使用 JavaScript 进行 Google 地理编码

Using JavaScript for Google geocoding

我根据 Google 文档编写了以下脚本:https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingAddressTypes

但是,脚本不起作用。 我 运行 原来的 google 脚本在 link 上面,它有效。我无法弄清楚代码的哪一部分有错误。

谢谢

<!DOCTYPE html>
<html>
<body>
<script>
    var geocode_file_path = "C:\Hello.txt";
    createFile(geocode_file_path);

    var geocoder;

    initialize();

    geocodeAddress(geocoder);

    function initialize() 
    {
    geocoder = new google.maps.Geocoder();
    }

    function geocodeAddress(geocoder) {
        var addresses = ['121 Dartmouth Street, Boston, MA', 'Boston, USA'];
        var arrayLength = addresses.length;
        for (var i = 0; i < arrayLength; i++) {
            var address = addresses[i];
            geocoder.geocode({'address': address}, function (results, status) 
        {
        alert('ok')
                if (status === google.maps.GeocoderStatus.OK) {
                    var result = results[0].geometry.location;
                    var name = results[0].formatted_address;
            alert(result)
                    writeFile(geocode_file_path, name + ': ' + result.toString());
                } else {
                    alert('Geocode was not successful for the following reason: ' + status);
                }
            });
        }
    }

    function createFile(afile)
    {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var outFile = fso.CreateTextFile(afile, true);
        outFile.WriteLine('Geocoded Locations:');
        outFile.Close();
    }

    function writeFile(afile, str)
    {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var outFile = fso.OpenTextFile(afile, 8, true);
        outFile.WriteLine(str);
        outFile.Close();
    }
</script>
<script async defer
        src="https://maps.googleapis.com/maps/api/js?key=Mykey">
</script>
</body>
</html>

您应该先调用外部 Google 地图脚本。

同时从 script 标签中删除 asyncdefer 属性,因为 API 脚本是您脚本的直接依赖项,您希望它被执行按顺序。

<!DOCTYPE html>
<html>
<body>
<script src="https://maps.googleapis.com/maps/api/js?key=Mykey"></script>
<script>
    var geocode_file_path = "C:\Hello.txt";
    createFile(geocode_file_path);

    var geocoder;

    initialize();

    geocodeAddress(geocoder);

    function initialize() 
    {
    geocoder = new google.maps.Geocoder();
    }

    function geocodeAddress(geocoder) {
        var addresses = ['121 Dartmouth Street, Boston, MA', 'Boston, USA'];
        var arrayLength = addresses.length;
        for (var i = 0; i < arrayLength; i++) {
            var address = addresses[i];
            geocoder.geocode({'address': address}, function (results, status) 
        {
        alert('ok')
                if (status === google.maps.GeocoderStatus.OK) {
                    var result = results[0].geometry.location;
                    var name = results[0].formatted_address;
            alert(result)
                    writeFile(geocode_file_path, name + ': ' + result.toString());
                } else {
                    alert('Geocode was not successful for the following reason: ' + status);
                }
            });
        }
    }

    function createFile(afile)
    {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var outFile = fso.CreateTextFile(afile, true);
        outFile.WriteLine('Geocoded Locations:');
        outFile.Close();
    }

    function writeFile(afile, str)
    {
        var fso = new ActiveXObject("Scripting.FileSystemObject");
        var outFile = fso.OpenTextFile(afile, 8, true);
        outFile.WriteLine(str);
        outFile.Close();
    }
</script>
</body>
</html>