サイトアイコン わんすけに聞いてみる

一括して住所から座標を取得[Google Maps API]

今日は、前回の住所から地図上の座標を取得するコードを改良して

一括で住所リストから座標を取得できる様にしてみた。

 

連続してリクエスト送りすぎると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 }}
モバイルバージョンを終了