2017-01-09 1 views
2

Google Maps JavaScript API v3을 사용 중이며 Places API를 사용하여 자동 완성 결과를 반환합니다. Autocomplete에서 반환 된 결과를 해당 도시의 사용자가있는 도시로 묶고 싶습니다.사용자 위치에서 LatLngBounds를 계산하십시오.

"Houston, TX, USA"와 같은 위치 정보를 실제로 지오 코딩하는 경우 Google지도 API의 응답 부분에 Autocomplete 같은 곳의 경계로 사용할 수있는 LatLngBounds이 포함됩니다. 그러나 브라우저를 통해 사용자의 위치를 ​​얻으므로 위도와 경도 좌표가 모두 있습니다. 가장 직접적인 해결책은 사용자의 위치를 ​​역 지오 코딩하여 대략적인 지역을 얻은 다음 해당 지역을 지오 코딩하여 LatLngBounds을 얻는 것입니다. 그러나, 그것은 매우 비효율적 인 것 같습니다. 이전과 이후의 지오 코딩없이이 작업을 수행하는보다 효율적인 방법이 있습니까?

+0

장소 응답에는 반환 된 결과에 대한 뷰포트/경계가 포함되지만 다른 주소 구성 요소에는 포함되지 않습니다. – geocodezip

+0

안녕하세요 크리스 당신이 내 대답을 언급 한 것을 보았습니다. (긍정적 인 의견에 감사드립니다.) 그렇다면이 질문을 보았고, 코드'place.geometry '로 자동 완성에서 경계를 얻을 수 있기 때문에 좀 이상하게 보였다고 생각했습니다. .viewport.getSouthWest(). lat(). toFixed (6);'(경계를 만드는 다른 세 좌표에 대해서도 마찬가지입니다.) 이게 니가 찾고 있던거야? –

+0

감사합니다. 안타깝게도 JavaScript Geolocation API (Google이 아닌 내장 함수)의 사용자 위치를 기반으로 '자동 완성'의 경계를 설정하고 이미 설정된 '자동 완성'에서 경계를 가져 오지 않을 것입니다. 나는 약간의 해결책을 찾았는데, 나는 그것을 앞뒤로 올릴 것이다. –

답변

0

Circle 개체에서 경계를 얻을 수 있다는 것을 알았습니다. 실제로지도에 그리지 않아도되었습니다. 경계선을 원하는 반경의 반경으로 사용자의 위치를 ​​중심으로 새로운 Circle을 만듭니다. 예를 들어, 이것은 이십오마일 (40,233.6 미터) 반경의 원을 만들어 :

autocomplete.setBounds(circle.getBounds()); 

그것은 내가 찾던 정확히 아니지만, 그런 다음

var circle = new google.maps.Circle({ radius: 40233.6, center: userLatLng }); 

을, 당신은 단지 getBounds 전화 그것은 충분히 잘 작동합니다.

관련 문제