2016-08-18 3 views
-1

Google지도 Javascript API를 사용하여지도를 렌더링하고 위치 마커 집합을 표시합니다. 위치를 가져 오는 AJAX 요청을 통해 반환되는 데이터의 양을 줄이기 위해 요청시 경계 상자의 좌표를 전송하여 보이는 위치 만 반환합니다.Google지도 JS API - getBounds()가 항상 정의되지 않음

나는 현재의 라인을 따라 코드를 가지고 :

google.maps.event.addListener(Map.map, "bounds_changed", function() { 
    Map.bounds.north = Map.map.getBounds().getNorthEast().lat(); 
    Map.bounds.east = Map.map.getBounds().getNorthEast().lng(); 
    Map.bounds.south = Map.map.getBounds().getSouthWest().lat(); 
    Map.bounds.west = Map.map.getBounds().getSouthWest().lng(); 
    }); 

어느 내가 getBounds 작품 맵을 이동할 때 (데이터를 검색하기 위해 서버로 전송되고있는) Map.bounds를 업데이트하는 방법을 이해한다. 그러나지도를 만들 때 Map.bounds을 설정할 수 없으므로 위치에 대한 초기 요청이 실패합니다. 내가 Map.map.getBoundsgoogle.maps.event.addListener 외부로 호출하면 getBounds이 정의되지 않았다는 오류가 발생합니다. 지도가로드되면 사용자가 상호 작용하기 전에 경계를 어떻게 설정할 수 있습니까?

이벤트를 기반으로

+0

이 문제를 보여줍니다하는 [mcve] 주시기 바랍니다. 게시 한 코드가 실패하지 않아야합니다. – geocodezip

+0

내가 게시 한 코드가 작동합니다. 게시 한 이유는 그것이 작동하는 유일한 인스턴스입니다. 다른 컨텍스트에서 getBounds 함수를 사용하면 정의되지 않은 오류가 발생하지만 (여전히 Google Maps 콜백 내부에 있음). 이 정확한 경우의 외부에서 getBounds를 사용하는 예제로 코드에 대한 수정을 요구하지 않습니다. – FatalKeystroke

+0

그것은 나에게 명확하지 않았습니다. 당신이 시도 했었던 것이 효과가 없었던 예가 도움이되었을 것입니다. – geocodezip

답변

0

Google지도 자바 스크립트 API (나 또한 같은 결과 "bounds_changed" 외에 "idle" 시도). 첫 번째 bounds_changed 이벤트가 발생하기 전에지도에서 getBounds를 호출하면 작동하지 않습니다. 처음으로 설정된 후에는 언제든지 작동합니다.

예 :

var map; 
 

 
function initMap() { 
 
    map = new google.maps.Map(document.getElementById('map'), { 
 
    center: { 
 
     lat: 42, 
 
     lng: -72 
 
    }, 
 
    zoom: 8 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, 'load', initMap);
html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100%; 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<input type="button" value="get bounds" onclick="document.getElementById('bounds').innerHTML = map.getBounds().toUrlValue(6);" /> 
 
<div id="bounds"></div> 
 
<div id="map"></div>

관련 문제