使用 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
标签中删除 async
和 defer
属性,因为 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>
我根据 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
标签中删除 async
和 defer
属性,因为 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>