Google Map PlaceServiceのgetDetails()が思うように結果を返してくれないとき

2020年6月11日グーグル

グーグルマップAPIで、お店とか施設の情報を取得できるPlacesServiceというものがあります

以下のようなコードで、複数の施設情報を一気に取得しようとしたんですが、なぜか中途半端な結果しか返してきません

for (var i = 0; i < markers.length; i++) {
    var service = new google.maps.places.PlacesService(Map);
    service.getDetails({
        placeId: "<詳細を知りたいPlace idを指定>",
        fields: ['name', 'geometry']
    }, function (place, status) {
        console.log("result()" + status);
    });
}

ログを確認してみると「OVER_QUERY_LIMIT」というエラーが出てました

調べてみると、どうやら1秒あたりに呼び出せるAPIの回数にも制限があって、それが50回とのことです

確かにデータ数的には70個以上あったので、まさにその制限に引っかかったらしいです

ただ、厄介なことにgetDetails()は一度に一個の場所しかリクエストできません

そんな制限つけるぐらいなら複数のplace_idを指定して、その結果を一気に返してくれれば良いのに。。。

しょうがないので、getDetails()はその地点をクリックしたときのイベント内で取得するように変更しました

ただし、クリックしてからAPIを叩くから、あらかじめ取得しておくのに比べて多少ロスが出ますが致し方ありません

エンジニアの年収を上げる方法

フリーランスエンジニアで年収を大幅アップしませんか?
実際に僕は会社員からフリーランスエンジニアになって年収が87万円アップしました

今なら相談(ヒアリング)するだけで3,000円分のamazonギフト券がもらえます!
初めての案件契約で最大10万円分の準備金がもらえます
非公開の高単価案件(100万円超え)が多数あります

詳しくはこちら