2013-06-22 15 views
6

Bardzo proste pytanie, że nie wydaje się uzyskać prawo w chwili, google mówi o regionie w oparciu o:Google Region Promowanie w jQuery skryptów

https://developers.google.com/maps/documentation/geocoding/#RegionCodes

Wykorzystuje następujący parametr:

region: 

ten kod iM pracować: http://jsfiddle.net/spadez/Jfdbz/19/

Moje pytanie brzmi jak mogę przekazać moje zmienna „ctryiso” do tego parametru w moim scenariuszu? Kiedy próbuję, nic się nie zmienia, więc kiedy ctryiso jest ustawione na US i wpisuję w Londynie, to nadal geokoduje Londyn, Anglia. Słyszałem, że może to być trochę niewiarygodne, ale nadal nie sądzę, że moja implementacja jest poprawna.

Każda pomoc będzie mile widziana.

+1

Twój otwarcie skrzypce isin't – Tushar

+1

Wystarczy FYI: Nie jestem w stanie uzyskać dostęp https://jsfiddle.net/spadez/Jfdbz/19/ (HTTPS) - ale jestem w stanie uzyskać dostęp http: // jsfiddle.net/spadez/Jfdbz/19/ (HTTP) –

+0

Dostaję współrzędne dla Londynu, Anglii, jeśli wpisuję po prostu "Londyn". Ale wszystkie sugestie dotyczą lokalizacji w USA. –

Odpowiedz

2

Normalnie, gdzie trzeba:

geocoder.geocode({ 
    address: query 
} 

Należy zdać region tak po prostu (jak już wspomniano):

geocoder.geocode({ 
    address: query, 
    region: SOME_VARIABLE_WITH_REGION_CODE 
} 

i powinno działać, chociaż wydaje się, że ... nieprawdaż i więcej osób ma ten sam problem.

Rozwiązanie (brzydki) jest dodanie go do rozwiązania, tak:

geocoder.geocode({ 
    address: query + ', ' + SOME_VARIABLE_WITH_REGION_CODE 
} 

Właśnie testowałem to i działa, ale jak powiedziałem - to nie jest „ładny” ani poprawny sposób to zrobić - to tylko obejście.

Jak widzimy tutaj: https://developers.google.com/maps/documentation/javascript/reference?hl=th-TH&csw=1#GeocoderRequest

można przekazać address, bounds, location i region. Ponieważ region nie wydaje się działać, będę próbować używać bounds przez pierwszych współrzędnych otrzymujesz za wybrany region:

https://developers.google.com/maps/documentation/javascript/reference?hl=th-TH&csw=1#LatLngBounds

+0

Hak dodawania kodu regionu do zapytania adresowego zazwyczaj działa, ale lepszym sposobem na ograniczenie do kraju (w porównaniu z krajem) jest użycie GeocoderComponentRestrictions (zobacz moją odpowiedź tutaj w celu uzyskania szczegółów). – jlivni

0
  • Można spróbować dodać parametr regionu jako ciąg kwerendy, kiedy
    obciążenie google map API, chociaż domyślnie powinno być US

    https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&region=US 
    
  • można również dołączyć „USA” na adres, który przechodzi do geokodera - który działa naprawdę dobrze, ale jest brzydki.

  • Można również zwrócić wszystkie wyniki i przeanalizować je i wyświetlić tylko te, które znajdują się w kraju zainteresowania. W większości przypadków będziesz musiał to zrobić w każdym razie, ponieważ w większości krajów istnieje wiele lokalizacji z tą samą nazwą, co .... Jest to preferowana metoda tak, jakby ktoś wpisze w Londynie, USA dostaniesz Londyn, KY i Londyn, OH i użytkownik/nadal musisz zdecydować, który z nich jest chcą ...

0

Jak zauważono w innej odpowiedzi, można uwzględnić w swoim wniosku region geocode do błędu (nie ograniczać) wynik.

Jednak w tym konkretnym przypadku Londyn w Wielkiej Brytanii wciąż jest uważany za lepszy wynik niż Londyn w USA. W związku z tym można dodatkowo ograniczyć (VS bias) wynik przy użyciu GeocoderComponentRestrictions jak opisano w Geocoding Service docs

że dokonały fiddle pokazano ten typ filtracji wymagając wyniki są w USA.

Należy zauważyć, że wynik jest w Londynie, USA, ale jeśli usuniesz GeocoderComponentRestrictions z kodu skrzypiec, pierwszy wynik jest teraz w Londynie, pomimo tendencyjności regionu.

Należy jednak pamiętać, że promowanie działa. Na przykład, jeśli teraz zmienisz region na "ES" i adres na "Toledo", wynik będzie w Hiszpanii. Jeśli usuniesz odchylenie, domyślnie jest to Toledo USA.

tl; dr używać region do stronniczości, a GeocoderComponentRestrictions do ograniczenia.

0
function getLatLong(address){ 
     var geo = new google.maps.Geocoder; 

     geo.geocode({'address':address},function(results, status){ 
       if (status == google.maps.GeocoderStatus.OK) { 
       return results[0].geometry.location; 
       } else { 
       alert("Geocode was not successful for the following reason: " + status); 
       } 

     }); 

    } 
    I am unable to understand your exact need but, I hope it will help you and if not then please tell me your exact need in short way  
+0

również użyj w swoim kodzie: if ((ctrysio! = '') && (ctrysio! = Null) && (ctrysio! = "Undefined")) mam nadzieję, że twój kod będzie działał również z tym – Anup

+0

https://developers.google.com/maps/faq # geocoder_exists – Anup

Powiązane problemy