You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
naver.maps.Marker 의 setMap 함수의 파라미터는 Map 또는 null 를 받을 수 있는데 Naver Maps API 사이트 예시 에서는 setMap 함수 파라미터로 naver.maps.Panorama 타입의 파노라마 객체를 넣고 있습니다.
varHOME_PATH=window.HOME_PATH||'.',pano=null;functioninitPanorama(){pano=newnaver.maps.Panorama("pano",{// pano 는 naver.maps.Panorama 타입입니다.position: newnaver.maps.LatLng(37.3599605,127.1058814),pov: {pan: -135,tilt: 29,fov: 100}});naver.maps.Event.addListener(pano,"init",function(){marker.setMap(pano);// 여기서 어떻게 naver.maps.Panorama 타입을 Map | null 타입에 넘길 수 있는 건가요 ? 🤔varproj=pano.getProjection();varlookAtPov=proj.fromCoordToPov(marker.getPosition());if(lookAtPov){pano.setPov(lookAtPov);}});}varmarker=newnaver.maps.Marker({// marker 는 naver.map.marker 타입입니다.position: newnaver.maps.LatLng(37.359484,127.105333),icon: {// 레티나 디스플레이 대응 마커 아이콘url: HOME_PATH+"/img/example/pin_map.png",// 110x72 크기의 원본 이미지size: newnaver.maps.Size(55,36),anchor: newnaver.maps.Point(28,36),origin: newnaver.maps.Point(0,0),scaledSize: newnaver.maps.Size(55,36)}});
... 이하생략
실제로 이렇게 했을 때 파노라마 뷰에 마커가 잘 나타나기는 합니다.
자바스크립트 언어 특성상 가능한 동작이라고 볼 수는 있지만, 아래 두가지가 그냥 넘어가기에는 찝찝한 것 같네요.
Naver Maps 문서 에 setMap() 함수의 파라미터는 naver.maps.Map | null 이라는 되어있다는 점
타입스크립트 사용 시에는 의도적으로 unknown 타입으로 변환 후 naver.map.Map 타입으로
다시 변환해주어야 setMap 함수의 파라미터에 넣을 수 있다는 점 이렇게 해야되는 것 자체가 정상적인 방법이라고 생각되지 않음
코드 예시
constmarker: naver.maps.Marker=newnaver.maps.Marker(생략)constpano: naver.maps.Panorama=newnaver.maps.Panorama(생략)marker.setMap(pano)// (not work ❌)
실제로 이렇게 하면 잘 동작합니다.
constmarker: naver.maps.Marker=newnaver.maps.Marker(생략)constpano: naver.maps.Panorama=newnaver.maps.Panorama(생략)marker.setMap(panoasunknownasnaver.maps.Map)// (this is work ✅)
결론 (문의 내용)
어떻게든 동작하는 이유는 마커의 setMap 함수에서 필요로 하는 변수/함수가 naver.maps.panorama 에도 존재하고 naver.maps.Map 에도 존재하기 때문인 거겠죠?
그렇다면 공식 문서에 파라미터 타입을 naver.maps.Map | naver.maps.panorama | null 이렇게 해야 되는거 아닐까요?
안녕하세요.
naver.maps.Marker 의 setMap 함수의 파라미터는
Map 또는 null
를 받을 수 있는데Naver Maps API 사이트 예시 에서는 setMap 함수 파라미터로
naver.maps.Panorama
타입의 파노라마 객체를 넣고 있습니다.실제로 이렇게 했을 때 파노라마 뷰에 마커가 잘 나타나기는 합니다.
자바스크립트 언어 특성상 가능한 동작이라고 볼 수는 있지만, 아래 두가지가 그냥 넘어가기에는 찝찝한 것 같네요.
Naver Maps 문서 에 setMap() 함수의 파라미터는 naver.maps.Map | null 이라는 되어있다는 점
타입스크립트 사용 시에는 의도적으로 unknown 타입으로 변환 후 naver.map.Map 타입으로
다시 변환해주어야 setMap 함수의 파라미터에 넣을 수 있다는 점
이렇게 해야되는 것 자체가 정상적인 방법이라고 생각되지 않음
코드 예시
실제로 이렇게 하면 잘 동작합니다.
결론 (문의 내용)
어떻게든 동작하는 이유는 마커의 setMap 함수에서 필요로 하는 변수/함수가 naver.maps.panorama 에도 존재하고 naver.maps.Map 에도 존재하기 때문인 거겠죠?
그렇다면 공식 문서에 파라미터 타입을 naver.maps.Map | naver.maps.panorama | null 이렇게 해야 되는거 아닐까요?
네이버 지도 타입정의 패키지 @types/navermaps 의 타입
공통 KVO 타입
naver.mapMap 타입
naver.map.panorama 타입
The text was updated successfully, but these errors were encountered: