2016-06-27 6 views
5

내가 Mapbox와 리플릿을 사용하고 있는데 내가 그렇게지도의보기를 설정하고 싶습니다 :리플릿 - Fitbounds 및 유지 센터

  1. 모든 마커가 중심이 특정 설정되어
  2. 볼 수 있습니다을 포인트

그것은 setView 및 fitbounds 별도로 각 지점을 쉽게 할 수 있어요하지만 난 setView이 경계를 변경하고 fitBounds가 중심을 변경하기 때문에 두 가지를 동시에 가지고하는 방법을 모르겠어요. 해결책은 중심과 확대/축소를 정의하는 것일 수 있지만, 어떤 확대/축소가 모든 마커를 볼 수 있는지 어떻게 알 수 있습니까?

편집

나는 IvanSanchez에 의해 제안 된 솔루션을 구현하며 예상대로 작동합니다

let ne=leafletBounds.getNorthEast(); 
let sw=leafletBounds.getSouthWest(); 
let neSymetric=[ne.lat + (center.lat - ne.lat)*2, ne.lng + (center.lng - ne.lng)*2]; 
let swSymetric=[sw.lat +(center.lat - sw.lat)*2, sw.lng + (center.lng - sw.lng)*2]; 
leafletBounds.extend(L.latLngBounds(swSymetric, neSymetric)); 

답변

3

당신의 경계를 취득하고 원하는 중심점에 따라 포인트 대칭을 적용하여 초 L.Bounds 인스턴스를 만듭니다. 원래 경계와 대칭 경계가 포함 된 L.Bounds을 새로 만듭니다. 그것으로 fitBounds()을 실행하십시오.

+0

감사합니다. 쉽고 효율적인 솔루션입니다. – DevLR

0

다른 해결책이 있습니다. fitBound()로지도를 조정 한 후에 map.panTo ([lat, lng])를 호출하면됩니다. 나는 VueJs를 사용하여 이것을 mounted() 라이프 사이클 후크에서 호출한다.

사용자의 위치와 지리적 인 특징을 멀리 볼 수 있도록 피팅 범위가 맞지만, 사용자의 실제 위치가 fitBounds 후에지도의 중심에 있으므로 panTo를 사용합니다. 지금까지 원활하게 작동하는 것 같습니다.