今日は、前回の住所から地図上の座標を取得するコードを改良して
一括で住所リストから座標を取得できる様にしてみた。
連続してリクエスト送りすぎるとOVER_QUERY_LIMIT
無料のGoogle Maps APIだとリクエスト回数に制限があって
1秒間に11回を超えると「OVER_QUERY_LIMIT」というエラーが帰ってきてしまう。
なので、簡単な対策ではありますがsetTimeoutで1秒間に1リクエストでGeocodingできるようにしてみた。
var app = new Vue({ el: "#input-form", data: { address_search: "札幌市中央区南3条西11丁目330番地2\n札幌市北区北24条西6丁目1番1号\n札幌市東区北11条東7丁目1番1号\n札幌市白石区南郷通1丁目南8番1号\n札幌市厚別区厚別中央1条5丁目3番2号\n札幌市豊平区平岸6条10丁目1番1号\n札幌市清田区平岡1条1丁目2番1号\n札幌市南区真駒内幸町2丁目2番1号\n札幌市西区琴似2条7丁目1番1号\n札幌市手稲区前田1条11丁目1番10号\n札幌市北区篠路4条7丁目2番40号", adrs_list: [] }, created: function (){ }, methods:{ getlatlng(){ this.adrs_list = []; let adrs = this.address_search.split(/\r\n|\n/); if (adrs.length) { for(let i in adrs){ if(adrs[i]){ setTimeout(geocode_append, i * 1500,adrs[i]); } } } } } }); function geocode_append(query_adrs){ var geocoder = new google.maps.Geocoder(); geocoder.geocode({ address: query_adrs }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[0].geometry) { var address = results[0].formatted_address.replace(/^日本、/, ''); var latlng = results[0].geometry.location; app.adrs_list.push({address: address, lat: latlng.lat(), lng: latlng.lng(), comment: ""}); } } else { app.adrs_list.push({address: "", lat: 0, lng: 0, comment: status }); } }); }
住所から座標一括取得
ここに座標を取得したい住所をリストで入力する↓↓↓
住所 | lat | lng | コメント |
---|---|---|---|
{{ val.address }} | {{ val.lat }} | {{ val.lng }} | {{ val.comment }} |