|
(X)HTML, JavaScript, DHTML, XML, CSS Client scripting tehnologije, Dynamic HTML, Cascading Stylesheets, XML i standardi |
|
Alati teme | Način prikaza |
30. 08. 2013. | #1 |
profesionalac
Professional
Datum učlanjenja: 25.10.2012
Poruke: 278
Hvala: 16
32 "Hvala" u 9 poruka
|
Smanjivanje query requesta - principi
Kosristim google maps API, google places API kao i RouteBoxer library LINK
Ovde sam postavio deo koda i demo online: http://jsbin.com/EVEWOta/35 Znaci ovaj deo koda aplikacije koju radim, sluzi za sledece: Odabere se distanca (default 30mi), polazna tacna, zavrsna tacka. Kod izracuna rutu sa prikaze na mapi kao i sa ovim routeBox-om podrucje uz put a u zavisnoti od distance koja je odabrana i na tom podrucju prikaze objekte koji su u blizini a koje putnici mogu da posete (hotele,restorane,benzinske pumpe, muzeje itd.) Imam sledeci problem: Pri vecim distancama a ukoliko korisnik odabere da se prikaze podrucje npr. 5km/mi od puta ovaj routeBoxer pravi veliki broj bokseva, kvadrata za pretrazivanje podrucja i ubrzo dobijem poruku OVER_QUERY_LIMIT. Kako da resim ovaj problem? Ovo mi je veoma bitno jer npr. probajte da odabete polazak istanbul, dolazak Paris i distancu 10mi, pretrazivanje ce se zaustaviti vec u Bugarskoj jer dobijem poruku OVER_QUERY_LIMIT. Da li mogu ovo nekako da resim ili moram da pravim svoju bazu sa objektima pa da odatle vucem podatke s obzirom da je google places API rigorozan po pitanju requesta ? |
31. 08. 2013. | #2 |
profesionalac
Professional
Datum učlanjenja: 25.10.2012
Poruke: 278
Hvala: 16
32 "Hvala" u 9 poruka
|
c
Pokusao sam na ovaj nacin ali opet nije uspesno a to je da dodam setTimeout kako ne bi prekoracio broj requesta po sekundi i kad naidje prazan box da sistem odmah predje na drugi... ali opet isto:
Kôd:
function findPlaces(boxes,searchIndex) { var request = { bounds: boxes[searchIndex], types: ["museum"] }; // alert(request.bounds); service.nearbySearch(request, function (results, status) { if (status != google.maps.places.PlacesServiceStatus.OK) { //OVDE SE PRESKACE PRAZAN BOX I PRELAZI NA DRUGI searchIndex++; } // alert(results.length); document.getElementById('side_bar').innerHTML += "bounds["+searchIndex+"] returns "+results.length+" results<br>" for (var i = 0, result; result = results[i]; i++) { var marker = createMarker(result); } //OVDE SE CEKA NA SVAKI NOVI REQUEST setTimeout(function () { alert('hello'); }, 3000); searchIndex++; if (searchIndex < boxes.length) findPlaces(boxes,searchIndex); }); } E sad zaista ne znam sta je ustvari problem ovde??? |
31. 08. 2013. | #3 |
član
Certified
Datum učlanjenja: 23.02.2012
Poruke: 92
Hvala: 0
1.169 "Hvala" u 15 poruka
|
setTimeout ti ne radi nista osim sto alertuje 'hello'
ostatak koda nisam ni gledao pazljivije ovo mi je prvo upalo u oci. javascript je event-based, a ti si pretpostavljam mislio da setTimeout koristis kao sleep(). ako hoces da ti se nesto okine par sekundi kasnije stavi ga u setTimeout(function(){ sta zelis da radis }, posle koliko milisekundi); |
31. 08. 2013. | #4 | |
profesionalac
Professional
Datum učlanjenja: 25.10.2012
Poruke: 278
Hvala: 16
32 "Hvala" u 9 poruka
|
Uredu evo ovde: http://jsbin.com/EVEWOta/45 sam uradio sledece:
Citat:
|
|
01. 09. 2013. | #5 |
profesionalac
Professional
Datum učlanjenja: 25.10.2012
Poruke: 278
Hvala: 16
32 "Hvala" u 9 poruka
|
Konzola kaze: Maximum call stack size exceeded - sta ustvari to znaci
kao i opet "800 OVER_QUERY_LIMIT" iako sam stavio da se poziva na svakih 1000ms |
|
|