2011-03-19 4 views
12

기본적으로 특정 위도/경도를 중심으로 V3 맵로드 및 센터링이 있습니다. 로드되면 사용자는 주소를 입력하여 해당 지점으로가는 길을 찾을 수 있습니다. 이 경우지도의 왼쪽에 방향 상자가 포함되도록 크기가 조정됩니다. 이 때문에 경로가지도 창에서 중심을 벗어납니다. 내가 논리적으로 작동해야한다고 생각하지만, 아무 소용이 다음 코드를 시도했다.길 찾기가 렌더링 된 후 V3 Google지도를 중심에 놓습니다.

새로운 실현 : 어떤 방식 으로든 창의 크기를 조정하면 예상대로 작동하기 시작합니다.

발견 :지도 컨테이너의 크기를 조정 한 후 google.maps.event.trigger(map, 'resize')을 트리거해야했습니다.

directionsService.route(query, function(result,status) { 
    if (status === google.maps.DirectionsStatus.OK) { 
     // This sets the directions container to display:block and resizes the map 
     document.getElementById('map-container').className = "directions"; 
     directions.setDirections(result); 
     var bounds = result.routes[0].bounds; 
     map.fitBounds(bounds); 
     map.setCenter(bounds.getCenter()); 
    } else { 
     alert(""); 
    } 
});
+0

일단 fitBounds를 호출하면 LatLngBounds를 중심으로 설정해야하므로 setCenter가 필요하지 않습니다. – kjy112

+0

예, 마지막 도랑 노력에서 setCenter()를 추가했습니다. 유무에 관계없이 예상대로 중앙에 배치되지 않습니다. – Justin

+0

완전히 "크기 조정"지도 부분을 잘못 읽었습니다. 다행이 다행 이네 – kjy112

답변

1

당신은 이미 내가 말할 대답을 찾았습니다. resize 이벤트는지도 컨테이너 (또는 부모 컨테이너)를 변경할 때마다 올바르게 얻는 것이 중요합니다. 필자는 두 개의 탭 (지도 및 운전 경로) 사이를 뒤집었다. 처음에는지도가지도 탭에 올바르게 표시되었지만 길 찾기로 전환하고지도로 돌아 가면 표시의 재미가 발생했습니다.

지도가 한 모퉁이 (내 경우에는 왼쪽)에 작은 타일 만 표시하고 나머지는 공백으로 채우면 크기 조정 트리거가 실행되어야합니다.

관련 문제