javascript - Throttling or delaying Google Places API autosuggestions -


google places api web service has 1000 request per day quota limit non-billed accounts. when using search box autosuggestion feature providing multiple places each key press, limit reached quickly.

<input id="pac-input" class="controls" type="text" placeholder="search box"> <div style="height:100%; width:100%;position:absolute;"> <div id="map"></div> </div> <script>   window.onload = initautocomplete;   function initautocomplete() {              var my_position = new google.maps.latlng(51.163375, 10.447683);             var map = new google.maps.map(document.getelementbyid('map'), {               center: {lat: 51.163375, lng: 10.447683},               disabledoubleclickzoom: true,               zoom: 9,               maptypeid: 'roadmap'             });              // create search box , link ui element.             var input = document.getelementbyid('pac-input');              var searchbox = new google.maps.places.searchbox(input);             map.controls[google.maps.controlposition.top_left].push(input);              // bias searchbox results towards current map's viewport.             map.addlistener('bounds_changed', function() {               searchbox.setbounds(map.getbounds());             });              var markers = [];             var crowdmarker = new google.maps.marker({               position: my_position,               map: map             });             google.maps.event.addlistener(map, 'dblclick', function(e){               var positiondoubleclick = e.latlng;               crowdmarker.setposition(positiondoubleclick);               var lat = crowdmarker.getposition().lat();               var lng = crowdmarker.getposition().lng();             });             // listen event fired when user selects prediction , retrieve             // more details place.              google.maps.event.adddomlistener(searchbox, 'keydown', function (e) {               if (e.keycode == 13) {                   e.preventdefault();               }           });             searchbox.addlistener('places_changed', function() {               var places = searchbox.getplaces();                if (places.length == 0) {                 return;               }                // clear out old markers.               markers.foreach(function(marker) {                 marker.setmap(null);               });               markers = [];                // each place, icon, name , location.               var bounds = new google.maps.latlngbounds();               places.foreach(function(place) {                 if (!place.geometry) {                   console.log("returned place contains no geometry");                   return;                 }                 var icon = {                   url: place.icon,                   size: new google.maps.size(71, 71),                   origin: new google.maps.point(0, 0),                   anchor: new google.maps.point(17, 34),                   scaledsize: new google.maps.size(25, 25)                 };                  // create marker each place.                 markers.push(new google.maps.marker({                   map: map,                   icon: icon,                   title: place.name,                   position: place.geometry.location                 }));                  if (place.geometry.viewport) {                   // geocodes have viewport.                   bounds.union(place.geometry.viewport);                 } else {                   bounds.extend(place.geometry.location);                 }               });               map.fitbounds(bounds);             });           }     </script>     <script src="https://maps.googleapis.com/maps/api/js?key=myapikey&libraries=places"     async defer></script> 

things i've tried include setting bound searchbox limit suggestions set area, adding delay within keydown section.

can suggest way able throttle or delay autosuggestion appearing, , therefore sending fewer requests?

i'm afraid current implementation of autocomplete , search box in places library of maps javascript api doesn't allow throttle or delay requests programmatically. can see feature request in google issue tracker this:

https://issuetracker.google.com/issues/35823678

please star feature request add vote. workaround can think of implementing own autocomplete element uses google.maps.places.autocompleteservice class , able control frequency of requests sent autocompleteservice.

https://developers.google.com/maps/documentation/javascript/reference#autocompleteservice


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -