6

Obecnie używam mapy Google z warstwą stołu Fusion. Za pomocą tej mapy wykonuję zapytania AJAX, które wypełniają mapę i listę z wynikami.Co powoduje, że maps.googleapis.com/maps/vt zwraca błąd 400?

Niedawno wystąpił problem z odpowiedzią interfejsu API Map Google wracającą jako błąd 400 "Zniekształcone żądanie". Ta odpowiedź pojawia się sporadycznie, gdy na mapie zostanie wyświetlony nowy zestaw wyników po ustawieniu filtrów i wysłaniu za pośrednictwem AJAX. Podczas sprawdzania błędów w konsoli do debugowania Firefoksa zauważyłem, że może to być problem z parametrem pb. Problem polega na tym, że nie jestem pewien, co jest wadliwe w tym parametrze.

Oto wniosek, że błędy GET OUT:

https://maps.googleapis.com/maps/vt?pb=[...insert_param_code_here...]&callback=_xdc_._n2pwun&token=20077 

I wklejony co widzę przypisany parametr pb poniżej. To jest to, co jest wysyłane, gdy tworzone jest jedno z "nieważnych" zapytań.

"!1m4!1m3!1i13!2i2042!3i3139!1m4!1m3!1i13!2i2043!3i3139!1m4!1m3!1i13!2i2042!3i3140!1m4!1m3!1i13!2i2042!3i3141!1m4!1m3!1i13!2i2043!3i3140!1m4!1m3!1i13!2i2043!3i3141!1m4!1m3!1i13!2i2042!3i3142!1m4!1m3!1i13!2i2042!3i3143!1m4!1m3!1i13!2i2043!3i3142!1m4!1m3!1i13!2i2043!3i3143!1m4!1m3!1i13!2i2044!3i3139!1m4!1m3!1i13!2i2045!3i3139!1m4!1m3!1i13!2i2046!3i3139!1m4!1m3!1i13!2i2044!3i3140!1m4!1m3!1i13!2i2044!3i3141!1m4!1m3!1i13!2i2045!3i3140!1m4!1m3!1i13!2i2045!3i3141!1m4!1m3!1i13!2i2044!3i3142!1m4!1m3!1i13!2i2044!3i3143!1m4!1m3!1i13!2i2045!3i3142!1m4!1m3!1i13!2i2045!3i3143!1m4!1m3!1i13!2i2046!3i3140!1m4!1m3!1i13!2i2046!3i3141!1m4!1m3!1i13!2i2046!3i3142!1m4!1m3!1i13!2i2046!3i3143!2m21!1e2!2sft:tableID!4m2!1ssg!2s%20Cities_With_Charters%20%3D%20'East%20St.%20Louis%20Area'%20AND%20Students_Served%20LIKE%20'%25'%20AND%20School_Type_Dropdown%20IN%20('Charter')%20ORDER%20BY%20School_Name%20ASC!4m2!1ssc!2sSchool_Info_ID%2C%20CPS_ID%2C%20RCDTS%2C%20School_Name%2C%20Street_Address%2C%20City%2C%20State%2C%20Zip%2C%20Phone%2C%20Website%2C%20Lat%2C%20Long%2C%20Year_Opened%2C%20School_Description%2C%20District_Info_ID%2C%20District_Name%2C%20Charter_Renew_YR%2C%20Network_ID%2C%20Network%2C%20Community_Area%2C%20State_Rep_District%2C%20State_Sen_District%2C%20Ward_Remapped%2C%20Grades_Served%2C%20Grades_Capacity%2C%20Serves_ES%2C%20Serves_HS%2C%20Serves_MS%2C%20Serves_Dropouts%2C%20School_Type_Dropdown%2C%20School_Type_Color%2C%20School_Type_Display%2C%20Profile_Type%2C%20SQRP_Rating%2C%20SQRP_Profile%2C%20Cities_With_Charters%2C%20Link_IIRC%2C%20Students_Served!4m2!1ssq!2s'School_Type_Color'%20%3D%20'GREEN'$'School_Type_Color'%20%3D%20'ORANGE'$'School_Type_Color'%20%3D%20'BLUE'$'School_Type_Color'%20%3D%20'MAGENTA'!4m2!1sc!2si:grn_blank$i:orange_blank$i:ltblu_blank$i:purple_blank!4m2!1sy!2s2!4m2!1stmplt!2s2!5i1!3m3!2sen-US!3sUS!5e18!4e3!12m1!5b1" 

Oto zapytanie bez kodowania URL tylko dla odniesienia:

SELECT School_Info_ID, CPS_ID, RCDTS, School_Name, Street_Address, City, State, Zip, Phone, Website, Lat, Long, Year_Opened, School_Description, District_Info_ID, District_Name, Charter_Renew_YR, Network_ID, Network, Community_Area, State_Rep_District, State_Sen_District, Ward_Remapped, Grades_Served, Grades_Capacity, Serves_ES, Serves_HS, Serves_MS, Serves_Dropouts, School_Type_Dropdown, School_Type_Color, School_Type_Display, Profile_Type, SQRP_Rating, SQRP_Profile, Cities_With_Charters, Link_IIRC, Students_Served FROM tableID WHERE Cities_With_Charters = 'East St. Louis Area' AND Students_Served LIKE '%' AND School_Type_Dropdown IN ('Charter') ORDER BY School_Name ASC 

Kroki Zrobiłem tak daleko, aby to naprawić:

  • Upewniwszy dowolny ciąg zapytania wysyłane do Fusion Tables został wysłany z kodowaniem URL.
  • Sprawdziłem cytaty i znaki cudzysłowu oraz upewniłem się, że w wysyłanym zapytaniu nie ma żadnych zbłąkanych.
  • Sprawdziłem parametry początkowe Google Map, aby upewnić się, że nie piszę żadnych literówek ani nie dodaję żadnych nieistniejących parametrów.

Czy są inne środki ostrożności, których mi brakuje, aby upewnić się, że źle sformułowana treść nie została wysłana?

+0

Gdzie jest udokumentowane żądanie GET? – MrUpsidown

+0

Nie jestem pewien. Próbowałem już sprawdzić, czy są jakieś dokumenty, i nie znalazłem nic konkretnego. Jedyne, co wiem, to to, że wydaje się, że coś zostało wysłane przez Google jako odpowiedź na żądanie odświeżenia lub przeładowania mapy lub jej warstw. – Kiwithing

+0

Skończyłem kontakt z Google na ten temat i zgłoszenie błędu na sugestię ich wsparcia. Poprosiłem o to innych deweloperów, a niektórzy twierdzili, że może to mieć coś wspólnego z długością znaków/zapytań, inni mówili, że nie ma prawdziwego wzorca, kiedy problem się pojawia, inni mieli problem z powtarzaniem problemu konsekwentnie . – Kiwithing

Odpowiedz

0

Napotkałem ten sam problem. Jest to spowodowane tym, że CSS na stronie dla mapy z warstwami stołu fuzyjnego nie wyrównuje się z parametrami mapy. Poprawiłem CSS i zaczęły pojawiać się mapy.

10

Rozwiązałem to, otwierając Narzędzia dla programistów w przeglądarce Chrome i wybierając kolejno: Aplikacja> Wyczyść pamięć> Wyczyść dane witryny. Następnie, wciąż otwierając Narzędzia programistyczne, kliknij i PRZYTRZYMAJ przycisk odświeżania w lewym górnym rogu przeglądarki, aż zobaczysz słowa "Opróżnij pamięć podręczną i twarde przeładowanie". Kliknij to i możesz już iść.

+0

To z pewnością zadziałało na mnie, gdy w przeglądarce w przeglądarkach ładowały się kafelki mapy, ale po wypełnieniu innych obszarów DOM kafelki mapy zniknęłyby.Przejście do widoku satelitarnego załadowało te kafelki, ale nakładki nie istniały itd. Pełna pamięć podręczna wyczyszczona jak udokumentowano powyżej działała idealnie i na mapach logowania znowu działa. – alexleonard

+0

To był dokładnie mój problem i został naprawiony dokładnie tutaj wymienione. Dzięki! – xbeta