0

これをGoogle Maps API 3で使用しています

基本的に、マップに約 150 個のマーカーを追加しています。ジオコーディングを使用して緯度と経度を取得し、マップを特定の場所の中心に配置しますが、ジオコーディングを使用するのはそのときだけです。ただし、GeoCoding は結果を非同期的に返すため、残りのコードを GeoCode コールバック関数に配置して、結果が返されるのを待ちます (以下のコードを参照)。これは、空の地図が返されるようになる今日まで、すべて正常に機能していました。

調査したところ、GeocoderStatus がover_query_limitを返し、if ステートメントが原因で残りのコードをバイパスしていることに気付きました。

さらに調査したところ、1 日あたり 2500 件の GeoCode リクエストに制限があることがわかりました。ただし、マップ リクエストごとに GeoCode を 1 回しか呼び出していないため、この特定の Web サイトがこの制限に達した可能性があることを実際に確認することはできません...もちろん、以下のコードについて理解できないことがない限り...事実ですGeoCode コールバックですべてをラップするということは、どういうわけか GeoCode を複数回呼び出しているということですか?

とにかく、このコードではover_query_limit GeoCodeStatus エラーが発生することがあり、空白のマップが返されます

function initialize() {
    var geocoder = new google.maps.Geocoder();
    var mapCentre = "Blackpool, United Kingdom";

    // Get lat long for city that we use to center the map within the container.
    geocoder.geocode({ 'address': mapCentre }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var mapCentreLatlng = new google.maps.LatLng(results[0].geometry.location.lb, results[0].geometry.location.mb);
            // This function creates the marker - it does not use GeoCoder to look up an address as we supply the lat and long directly in our JSON
            buildMap(mapCentreLatlng);
        }
    });
}

そして、このコードは問題ありません - もう GeoCode を呼び出しません

function initialize() {
   var mapCentreLatlng = new google.maps.LatLng(53.8142, -3.0503);
   buildMap(mapCentreLatlng);
}

現在、すべてが機能していますが、誰か説明できるかどうか疑問に思っていますか?

4

2 に答える 2

1

リクエストの送信が速すぎると、この結果も得られます。ドキュメントを参照してください。

于 2013-11-06T16:31:00.167 に答える