何千もの緯度/経度座標のリストを逆ジオコーディングする必要があります。これは1セットの座標で問題なく実行できますが、多くの場合、一度に実行できるのは5つだけです。グーグルによって拒否されないように、これを1つのステップで実行し、ループの時間を計る方法を理解する必要があります。
コールバック関数を利用する必要があると他の場所で言われましたが、これを行う方法がわかりません。
ここにいくつかのデモコードがあります
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="js/jquery-1.7.2.min.js" ></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
var c = [];
c[0]="43.5878,-79.6777";
c[1]="49.2828,-123.1414";
c[2]="49.2895,-123.127";
c[3]="49.2784,-123.1364";
c[4]="49.0327,-122.2529";
c[5]="49.2696,-123.0587";
c[6]="49.269,-122.9954";
c[7]="49.235,-122.882";
c[8]="49.1908,-122.7508";
c[9]="49.085,-122.4111";
var a = [];
function codeLatLng(input, i) {
var latlngStr = input.split(",", 2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({
'latLng' : latlng
}, function(results, status) {
a[i] = results[0].formatted_address;
$("#test").append(a[i] + "<br />");
});
}
function showmethemoney(){
for (var i=0; i <= c.length - 1; i++) {
$("#test").append(i + ") " + c[i] + "<br/>");
codeLatLng(c[i], i);
};
}
</script>
</head>
<body>
<div id="test"></div>
<br />
<button onclick="showmethemoney();">Show me the money!</button>
</body>
結果をそれらの座標と一致させる必要があります。
どんな助けでも大歓迎です!
ありがとう。
編集:
もう少し進んでください:
var geocoder = new google.maps.Geocoder();
var c = [];
c[0]="43.5878,-79.6777";
c[1]="49.2828,-123.1414";
c[2]="49.2895,-123.127";
c[3]="49.2784,-123.1364";
c[4]="49.0327,-122.2529";
c[5]="49.2696,-123.0587";
c[6]="49.269,-122.9954";
c[7]="49.235,-122.882";
c[8]="49.1908,-122.7508";
c[9]="49.085,-122.4111";
var a = [];
function codeLatLng(input, i) {
var latlngStr = input.split(",", 2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({
'latLng' : latlng
}, function(results, status) {
//$("#test").append(results[0].formatted_address + "<br />");
a[i] = results[0].formatted_address;
$("#test").append(a[i] + "<br />");
});
}
var i = 0;
function showmethemoney(start, end) {
for (i = start; i <= c.length - 1 && i < end; i++) {
$("#test").append(i + ") " + c[i] + " - ");
codeLatLng(c[i], i);
}
if( i >= c.length - 1){
return;
}
setTimeout(function(){
showmethemoney(i, i+1);
}, 1500);
}
</script>
</head>
<body>
<div id="test"></div>
<br />
<button onclick="showmethemoney(0, 1);">Show me the money!</button>
</body>