javascript 如何在第一次与GoogleMap交互时触发文档全屏

nhn9ugyo  于 2023-05-05  发布在  Java
关注(0)|答案(2)|浏览(145)

bounty 8小时后到期。回答此问题可获得+50声望奖励。Simon Ferndriger希望引起更多关注这个问题。

当有人在Map上单击/轻敲时,我如何全屏显示整个文档?我尝试使用google.maps.event.addListenerdragstart,但不知何故,浏览器拒绝全屏请求,因为它需要由用户交互启动。所以我想,这次活动不算一次...
最重要的是,我尝试了Google Maps JS API使用的<div>容器上的所有鼠标事件,但是,看起来所有事件都被阻止/捕获,没有一个通过我单独的事件侦听器。

我如何才能做到这一点?

  • PS:我想全屏显示Map(以及我自己的导航项目)的原因是因为在移动的设备上,向下拖动Map时,地址栏会显示,这会扰乱视口高度,也会用一根手指拖动常规Map。
sdnqo3pr

sdnqo3pr1#

以下是Google Maps文档的链接:
Google Developer Docs -Map控件
Google Developer Docs - Replace Default Controls
Fullscreen控件提供以全屏模式打开Map的选项。默认情况下,桌面和移动的设备上启用此控件。注意:iOS不支持全屏功能。因此,全屏控制在iOS设备上不可见。

function initMap() {
    const map = new google.maps.Map(document.getElementById("map"), {
        zoom: 12,
        center: { lat: -28.643387, lng: 153.612224 },
        mapTypeControl: true,
        mapTypeControlOptions: {
            style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
            position: google.maps.ControlPosition.TOP_CENTER,
        },
        zoomControl: true,
        zoomControlOptions: {
            position: google.maps.ControlPosition.LEFT_CENTER,
        },
        scaleControl: true,
        streetViewControl: true,
        streetViewControlOptions: {
            position: google.maps.ControlPosition.LEFT_TOP,
        },
        fullscreenControl: true,
    });
}

window.initMap = initMap;
iq3niunx

iq3niunx2#

您可以考虑使用requestFullscreen API来获取整个文档的全屏。要在第一次单击时完成这项工作,只需在#map元素上创建一个变量isClicked用于onclick验证。

let map;

async function initMap() {
  const { Map } = await google.maps.importLibrary("maps");

  map = new Map(document.getElementById("map"), {
    center: { lat: -34.397, lng: 150.644 },
    zoom: 8,
  });
}

initMap();

let mapElement = document.querySelector('#map');
let clicked = false;
mapElement.onclick = () => {
  if(!clicked) {
    mapElement.requestFullscreen();
    clicked = true;
  }
}
body, html {
  height: 100%;
  width: 100%;
}

#map {
  width: 50%; 
  height: 90%;
}
<div id="map"></div>
<script src="http://maps.google.com/maps/api/js?key=API_KEY">
</script>

相关问题