단일 페이지 웹 앱을 개발 중이며 대부분 모바일 기기에서 사용됩니다. 그 기능 중 하나는 전체 브라우저 창을 일시적으로 점유하는 맵 모드입니다. 거리 눈금과 일부 컨트롤이지도의 네 모서리에 연결됩니다. 다음은지도에 대한 작은 스크린 샷입니다. 내가 말하고있는 것을 말할 수 있습니다.
지도는 <div>
with position: fixed
및 4 개의 좌표 0 으로 구현됩니다 . 또한 일시적으로 설정 <body>
에 overflow: hidden
맵이 원점에서 멀리 스크롤되는 기본 응용 프로그램 화면의 경우를 처리 할 볼 수있다. 데스크톱 브라우저에서 원하는 방식으로지도를 작동시키기에 충분합니다. 모바일 브라우저는 또한 "width=device-width,user-scalable=no"
창의 가시 영역이 뷰포트와 정확하게 일치 하도록 메타 뷰포트 태그를 제공해야했습니다 .
이 앱은 원래 몇 년 전에이 앱을 처음 만들었을 때 아름답게 작동 했지만 iOS Safari의 어느 곳에서 확장과 관련된 메타 뷰포트 옵션을 지키지 않았습니다. 너무 많은 사이트가 태그를 잘못 적용하여 읽을 수 없을 정도로 작은 아직 확대 할 수 없습니다. 현재이 브라우저에서지도를 사용하도록 설정하면 약간 확대 된보기가 생겨 오른쪽과 아래쪽의 해당 단추가 잘릴 수 있으며 이에 대해 아무 것도 할 수 없습니다모든 터치는 브라우저 스크롤이 아니라지도에 대한 확대 / 축소 제스처로 해석되기 때문입니다. 해당 버튼을 통해 액세스 할 수있는 기능이없고지도 오른쪽 상단 버튼이 없으면지도를 닫을 수 없습니다. 유일한 해결 방법은 페이지를 새로 고침하여 저장하지 않은 데이터가 손실 될 수 있습니다.
확실히 history.pushState
/를 사용 onpopstate
하여 맵 오버레이가 별도의 페이지처럼 동작하도록 추가 할 것입니다 . 브라우저의 뒤로 버튼을 사용하여지도 모드에서 벗어날 수 있지만 버튼이 없어서 기능 손실이 해결되지는 않습니다.
.requestFullscreen()
지도 오버레이를 구현하는 데 사용 하는 것을 고려 했지만 앱을 사용할 수있는 모든 곳에서는 지원되지 않습니다. 특히 iPhone에서는 전혀 작동하지 않으며 iPad에서는 상태 표시 줄과 콘텐츠를 오버레이하는 거대한 'X'버튼이 나타납니다. 내 거리 눈금을 더 이상 읽을 수 없을 것입니다. 어쨌든 내가 실제로 원하는 것은 아닙니다. 어쨌든 전체 화면이 아닌 전체 창이 필요합니다 .
최신 브라우저에서 전체 창 디스플레이를 사용하려면 어떻게해야합니까? 주제에서 찾을 수있는 모든 정보는 메타 뷰포트 태그 사용에 대해 이야기하지만 더 이상 작동하지 않는다고 언급했습니다.