Google Geocoder API szögletes 4

szavazat
0

Van egy vásárolt Google Map API kulcsot. A mi szögletes kódot, igyekszünk használni „google.maps.Geocode (). Geokódolni”, hogy használja az AGM / core szögletes könyvtár nem fordított geokódolását listáját szélesség / hosszúság. Egy második, azt akarta küldeni 20-30 kéri, hogy tudjuk, hogy az érvényes választ, és megjeleníti a címet a web portálon. De egyre az alábbi hibaüzenet: „OVER_QUERY_LIMIT” az geokód api hívás.

Itt látható a kódrészletet ugyanaz:

return Observable.create((observer: Observer<object>) => {
if (geocoder) {
       new google.maps.Geocoder().geocode({ 'location': latlng }, function (results, status) {
       console.log(status);
       if (status === 'OK') {
           console.log(results[0].formatted_address);
       }
    });
}});

Megpróbáltuk ugyanazt a java script és egyre ugyanazt a hibát. Nem vagyok biztos abban, hogy el kell küldeni további paramétereket, hogy elkerüljék ezt a hibát. Azt értékeljük, ha képes vezetni bennünket a kérdés megoldása.

Előre is köszönöm.

A kérdést 27/02/2018 22:01
a forrás felhasználó
Más nyelveken...                            


1 válasz

szavazat
0

Köszönjük, hogy a közösség egy esélyt, hogy segítsen ki itt. Most is megközelíteni ezt a problémát két különböző módon. Én használni mindkét megközelítés egyik célja, hogy tartsa meg eljusson a QPS határt, a másik pedig, hogy segítsen kezelni a helyzetet, ha a „azt a hidat, és készen áll, hogy átlépje azt”, úgy, hogy beszél- .

1) Ön potenciálisan gyorsítótár az összes eredmények által engedélyezett módon a Google szabvány ÁSzF.

Google Maps API-k Általános Szerződési Feltételek meghatározza, hogy átmenetileg gyorsítótár Google Maps adatok időszakra legfeljebb 30 napig, a teljesítmény javítása érdekében az alkalmazás. A gyorstárazás webes szolgáltatás válaszokat, az alkalmazás tudja kerülni küld ismétlődő kérések rövid ideig. Tény, hogy a webes szolgáltatás válaszok mindig tartalmazzák a Cache-Control HTTP fejléc, ami azt jelzi, az az időszak, amit cache az eredmény-például Cache-Control: nyilvános, max-age = 86400. A hatékonyság növelése érdekében, biztosítsa az alkalmazás mindig gyorsítótáraz eredménye legalább a megadott ideig ebben a fejléc, de nem több, mint a legnagyobb meghatározott időben a Google Maps API-k Általános Szerződési Feltételeit.

2) Lehet fojtja el kérését a timeout és / vagy jitter kérések véletlenszerű időközönként válaszok között leírt Google Docs és a JS időtúllépés a teljes minta alábbi kódot által biztosított @Andrew Leach .

// delay between geocode requests - at the time of writing, 100 miliseconds seems to work well
var delay = 100;


  // ====== Create map objects ======
  var infowindow = new google.maps.InfoWindow();
  var latlng = new google.maps.LatLng(-34.397, 150.644);
  var mapOptions = {
    zoom: 8,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var geo = new google.maps.Geocoder(); 
  var map = new google.maps.Map(document.getElementById("map"), mapOptions);
  var bounds = new google.maps.LatLngBounds();

  // ====== Geocoding ======
  function getAddress(search, next) {
    geo.geocode({address:search}, function (results,status)
      { 
        // If that was successful
        if (status == google.maps.GeocoderStatus.OK) {
          // Lets assume that the first marker is the one we want
          var p = results[0].geometry.location;
          var lat=p.lat();
          var lng=p.lng();
          // Output the data
            var msg = 'address="' + search + '" lat=' +lat+ ' lng=' +lng+ '(delay='+delay+'ms)<br>';
            document.getElementById("messages").innerHTML += msg;
          // Create a marker
          createMarker(search,lat,lng);
        }
        // ====== Decode the error status ======
        else {
          // === if we were sending the requests to fast, try this one again and increase the delay
          if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
            nextAddress--;
            delay++;
          } else {
            var reason="Code "+status;
            var msg = 'address="' + search + '" error=' +reason+ '(delay='+delay+'ms)<br>';
            document.getElementById("messages").innerHTML += msg;
          }   
        }
        next();
      }
    );
  }

       // ======= Function to create a marker
 function createMarker(add,lat,lng) {
   var contentString = add;
   var marker = new google.maps.Marker({
     position: new google.maps.LatLng(lat,lng),
     map: map,
     zIndex: Math.round(latlng.lat()*-100000)<<5
   });

  google.maps.event.addListener(marker, 'click', function() {
     infowindow.setContent(contentString); 
     infowindow.open(map,marker);
   });

   bounds.extend(marker.position);

 }

  // ======= An array of locations that we want to Geocode ========
  var addresses = [
           '251 Pantigo Road Hampton Bays NY 11946',
           'Amagensett Quiogue NY 11978',
           '789 Main Street Hampton Bays NY 11946',
           '30 Abrahams Path Hampton Bays NY 11946',
           '3 Winnebogue Ln Westhampton NY 11977',
           '44 White Oak Lane Montauk NY 11954',
           '107 stoney hill road Bridgehampton NY 11932',
           '250 Pantigo Rd Hampton Bays NY 11946',
           '250 Pantigo Rd Hampton Bays NY 11946',
           '44 Woodruff Lane Wainscott NY 11975',
           'Address East Hampton NY 11937',
           'Address Amagansett NY 11930',
           'Address Remsenburg NY 11960 ',
           'Address Westhampton NY 11977',
           'prop address Westhampton Dunes NY 11978',
           'prop address East Hampton NY 11937',
           'Address East Hampton NY 11937',
           'Address Southampton NY 11968',
           'Address Bridgehampton NY 11932',
           'Address Sagaponack NY 11962',
            "A totally bogus address"
  ];

  // ======= Global variable to remind us what to do next
  var nextAddress = 0;

  // ======= Function to call the next Geocode operation when the reply comes back

  function theNext() {
    if (nextAddress < addresses.length) {
      setTimeout('getAddress("'+addresses[nextAddress]+'",theNext)', delay);
      nextAddress++;
    } else {
      // We're done. Show map bounds
      map.fitBounds(bounds);
    }
  }

  // ======= Call that function for the first time =======
  theNext();
Válaszolt 28/02/2018 00:36
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more