지도 컨테이너 좌표 와 레이어 좌표 의 차이점은 무엇입니까 ?
내가 수집 한 것에서 맵 컨테이너 좌표 는 항상 맵 뷰포트를 기준으로하며 레이어 좌표는 항상 컨테이너 좌표 와 동일한 값으로 시작 하지만 맵이 이동하면 변경됩니다.
좌표 / 점을 참조하는 API :
지도 컨테이너 좌표 와 레이어 좌표 의 차이점은 무엇입니까 ?
내가 수집 한 것에서 맵 컨테이너 좌표 는 항상 맵 뷰포트를 기준으로하며 레이어 좌표는 항상 컨테이너 좌표 와 동일한 값으로 시작 하지만 맵이 이동하면 변경됩니다.
좌표 / 점을 참조하는 API :
답변:
containerPoint 메서드 는 2012 년의 기능 요청으로 시작되었으며 오늘날 약간 혼란 스럽습니다.
가장 좋은 대답은 전단지 관리자 인 Vladimir Agafonkin의 설명입니다.
"layerPoint는 실제로 외부 맵 컨테이너가 아닌 맵 레이어 (타일과 마커를 포함하는 div)에 상대적인 점입니다. 필요한 것은 map.layerPointToContainerPoint입니다. 그러나 즉시 가져 오는 편리한 방법이 없다는 것에 동의합니다. 다음 버전을 위해. "
더 자세하게 :
Leaflet의 핵심 공개 변환 방법은 응용 프로그램 개발자가 거의 사용하지 않지만 L.Map.project(latlng [, zoom])
and L.Map.unproject(point [, zoom])
입니다.
웹 맵은 각각 동일한 수의 픽셀을 가진 타일 격자로 나뉩니다. 확대 / 축소 수준이 높을수록지도는 더 많은 수의 타일로 나누어지고 해당하는 더 많은 수의 픽셀이 있습니다. 따라서지도의 픽셀 크기는 확대 / 축소 수준에 따라 다릅니다.
즉, 브라우저에서 Leaflet 데모 창을 사용하는 경우 주어진 latlng에 대한 L.Map.project의 출력은 확대 및 축소하는 경우 에만 변경됩니다.
최신 버전의 Leaflet (0.7.3)을 기준으로 다음과 같이 L.Map.latLngToLayerPoint
읽습니다.
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
대조적으로, L.Map.latLngToContainerPoint
읽습니다 :
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
로 L.Map.layerPointToContainerPoint
정의 :
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
개인지도 메소드 _getMapPanePos()
는 현재지도 위치와 처음 작성된 위치 사이 의 오프셋을 반환합니다 . 이것은 단지 layerPoint 및 containerPoint 차이는 위도와 경도 주어에 대응하도록 layerPoint가지도 용기에 위도와 경도의 위치라고하고,지도 팬 (되지 크게 동안) 동안 변화 <div>
가 초기 위치에있는지도와이 그동안, containerPoint는지도 컨테이너에서 latlng의 현재 위치입니다 <div>
.
편집 : 내가 잘못 밝혀졌다. 컨테이너 좌표는 보이는 프레임을위한 것으로 보이지만 레이어 좌표는 보이는 것보다 더 큰 영역을위한 것입니다. 이 질문에 답하려면 저보다 더 많은 지식이 필요합니다.