今日は、前回の住所から地図上の座標を取得するコードを改良して
一括で住所リストから座標を取得できる様にしてみた。
連続してリクエスト送りすぎると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 }} |