StreetView API: 隐藏全屏控件
StreetView API: Hiding FullScreen Control
我试图在街景 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 元素位于视口的右上角。
文档警告如下:
Note: This page describes the controls available in version 3.22 and later of the Google Maps JavaScript API. If you want to continue using the earlier set of controls for a while, you can set google.maps.controlStyle = 'azteca' in v3.22. Read more about the changes to the controls in this article: What's New in the v3.22 Map Controls.
但是我链接到 API Js 文件如下:
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
而 3.exp 在撰写本文时应为 3.22。
我在这里错过了什么?
我认为目前 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);
}
}
另一个解决方案是使用css隐藏全屏元素:
.gm-style > div:nth-child(10){
display:none;
}
随着 2016 年 1 月 18 日发布的最新版 Googlemap v3.22、v3.23,将执行以下操作:
.gm-fullscreen-control {
display: none;
}
fullscreenControl: false
而不是 fullScreenControl: false
Michal Szyndel 说得对。屏幕中的 s 是小写的。我建议将他的答案更改为正确答案。
我今天测试了 fullscreenControl 工作但 fullScreenControl 没有。
以下说法不正确。不报错但是对控件没有影响
fullScreenControl: false, -- this is not right
正确的代码是
fullscreenControl: false,
参见:https://developers.google.com/maps/documentation/javascript/reference
我试图在街景 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 元素位于视口的右上角。
文档警告如下:
Note: This page describes the controls available in version 3.22 and later of the Google Maps JavaScript API. If you want to continue using the earlier set of controls for a while, you can set google.maps.controlStyle = 'azteca' in v3.22. Read more about the changes to the controls in this article: What's New in the v3.22 Map Controls.
但是我链接到 API Js 文件如下:
<script src="//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
而 3.exp 在撰写本文时应为 3.22。
我在这里错过了什么?
我认为目前 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);
}
}
另一个解决方案是使用css隐藏全屏元素:
.gm-style > div:nth-child(10){
display:none;
}
随着 2016 年 1 月 18 日发布的最新版 Googlemap v3.22、v3.23,将执行以下操作:
.gm-fullscreen-control {
display: none;
}
fullscreenControl: false
而不是 fullScreenControl: false
Michal Szyndel 说得对。屏幕中的 s 是小写的。我建议将他的答案更改为正确答案。 我今天测试了 fullscreenControl 工作但 fullScreenControl 没有。
以下说法不正确。不报错但是对控件没有影响
fullScreenControl: false, -- this is not right
正确的代码是
fullscreenControl: false,
参见:https://developers.google.com/maps/documentation/javascript/reference