【问题标题】:StreetView API: Hiding FullScreen Control [closed]StreetView API:隐藏全屏控件 [关闭]
【发布时间】:2015-12-15 17:19:41
【问题描述】:

我试图在 Streetview API HUD 中隐藏切换全屏元素。

panorama = new google.maps.StreetViewPanorama(document.getElementById(data.id), {

        position            : new google.maps.LatLng(data.lat, data.lng),
        pov: {
            heading         : Number(data.heading),
            pitch           : Number(data.pitch)
        },
        linksControl: false,
        panControl: false,
        addressControl: false,
        enableCloseButton: false,
        zoomControl: false,
        fullScreenControl: false,
        enableCloseButton: false,
        addressControlOptions: {
             position: google.maps.ControlPosition.BOTTOM_CENTER
        }
    });

这些选项指定为here。除了fullScreenControl

之外的所有选项都有效

我的代码可以实时查看here。 UI 元素位于视口的右上角。

文档警告如下:

注意:本页介绍了 Google Maps JavaScript API 3.22 版及更高版本中可用的控件。如果您想暂时继续使用之前的一组控件,可以在 v3.22 中设置 google.maps.controlStyle = 'azteca'。在本文中阅读有关控件更改的更多信息:v3.22 地图控件中的新增功能。

但是我链接到 API Js 文件如下:

<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>

在撰写本文时,3.exp 应该是 3.22。

我在这里缺少什么?

【问题讨论】:

  • 我确认它在 3.22 中不起作用。我在 Google 的文档中找不到“fullScreenControl”,那在哪里?

标签: javascript google-maps google-maps-api-3 google-street-view


【解决方案1】:

我认为目前 API 存在一个小缺陷。我已经进行了一些测试,但也无法使用 fullScreenControlOptions 字段删除全屏控件,如文档中所述。

即使将 disableDefaultUI 设置为 true,也会显示全屏控件。

我知道这可能不是摆脱元素的更好方法,但您可以执行以下操作:

var FULL_SCREEN_CONTROL_STYLE = {
	width: '25px',
	height: '25px',
	top: '0px',
	right: '0px',
	position: 'absolute',
	overflow: 'hidden'
};

var children = panorama.getContainer().getElementsByTagName('div');

for (var i = 0; i<children.length; i++) {

	var current = children[i];
		
	var match = true;
	
	for (var k in FULL_SCREEN_CONTROL_STYLE) {
		if (current.style[k] != FULL_SCREEN_CONTROL_STYLE[k]) {
			match = false;
		}
	}
	
	if (match) { // THIS IS OUR ELEMENT
		current.parentElement.removeChild(current);
	}
	
}

【讨论】:

    【解决方案2】:

    另一种解决方案是使用css隐藏全屏元素:

    .gm-style > div:nth-child(10){
     display:none;
    }
    

    【讨论】:

    • 使用最新版本的 Googlemap(v3.23),这被打破了。
    • 使用下面这个答案,会好很多
    • 是的,stackoverflow.com/a/38569859/1768087 好多了,因为它直接链接到 HTML,未来可能会发生变化,所以这太老套了,而且不适应未来。
    • 不要依赖按钮在 10 个孩子之外,试试这个: $(".gm-fullscreen-control").parent().hide();下面的 JavaScripter 有正确的想法,但只是隐藏图像并不能摆脱按钮,您仍然可以单击它并全屏显示。这会找到确切的图像,然后删除父 - 按钮。
    【解决方案3】:

    随着 2016 年 1 月 18 日最新版本的 Googlemap v3.22、v3.23 的发布,以下功能将发挥作用:

    .gm-fullscreen-control {
      display: none;
    }
    

    【讨论】:

      【解决方案4】:

      fullscreenControl: false 而不是fullScreenControl: false

      【讨论】:

      【解决方案5】:

      Michal Szyndel 说的没错。屏幕中的 s 是小写的。我建议将他的答案更改为正确答案。 我今天测试了 fullscreenControl 工作,但 fullScreenControl 没有。

      【讨论】:

        【解决方案6】:

        以下不正确。不会出错但对控件没有影响。

        fullScreenControl: false,   -- this is not right
        

        正确的代码是

        fullscreenControl: false,
        

        见:https://developers.google.com/maps/documentation/javascript/reference

        【讨论】:

        • 工作完美,干杯
        猜你喜欢
        • 2016-01-18
        • 2023-03-12
        • 2013-10-14
        • 2012-08-07
        • 1970-01-01
        • 2016-07-04
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        相关资源
        最近更新 更多