したがって、配列から都市を取得するスクリプトをテストしています。次に、ジオコードを使用して座標を検索し、その後に都市のジップを取得します。 1つの都市でOKですが、配列では、geoCodeにはクエリの制限がありますので、setTimeoutを使用してバイパスしようとしていますが、jsではまだ驚くにはほど遠いため、うまく機能しません。 settimeoutを使用してジオコードクエリ制限をバイパスする
<head>
<div id= "test"></div>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
function getLoc(){
var geocoder = new google.maps.Geocoder();
var address = ["Helsinki", "Paris", "London"];
for (var i = 0; i < address.length; i++) {
setTimeout(function(i){
geocoder.geocode({ 'address': address[i]}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var long = results[0].geometry.location.lng();
alert(long);
getZip(lat, long);
}
});
}, i* 1000);
}
}
getLoc();
function getZip(lat, long){
var latlng = new google.maps.LatLng(lat, long);
geocoder.geocode({
'latLng': latlng
}, function(results, status) {
address = results[0].address_components;
zipcode = address[address.length - 1].long_name;
document.getElementById("test").innerHTML = zipcode;
});
}
</script>
</head>
<body>
</body>
から常に値を持っています最後の都市「ロンドン」? –
timeoutは機能しますが、最初のジオコード要求を処理しません。 – Skyhigh17
使用例やデータセットのサイズはわかりませんが、バックグラウンドでデータを取得するサーバー側のcronジョブを作成することを検討してください適切なスロットル)、データベースに格納します。 APIの制限がリアルタイムバッチ処理には低すぎるため、クライアントに意図的な遅延を追加すると訪問者が不満になる可能性があります。 –