web-dev-qa-db-ja.com

StreetView API:フルスクリーンコントロールの非表示

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を除くすべてのオプションが機能しています

私のコードはライブで見ることができます こちら 。 UI要素は、ビューポートの右上隅にあります。

ドキュメントは次のように警告します。

注:このページでは、バージョン3.22以降のGoogle Maps JavaScript APIで使用可能なコントロールについて説明します。以前のコントロールセットをしばらく使用し続ける場合は、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である必要があります。

ここに何が欠けていますか?

20
matthiasdv

別の解決策は、cssを使用してフルスクリーン要素を非表示にすることです。

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

fullscreenControl: false の代わりに fullScreenControl: false

61
papy98

次は正しくありません。エラーは発生しませんが、コントロールには影響しません。

fullScreenControl: false,   -- this is not right

正しいコードは

fullscreenControl: false,

参照: https://developers.google.com/maps/documentation/javascript/reference

15
XAos SPB

現時点で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
Romulo

Michal Szyndelが正しい。画面のsは小文字です。彼の答えを正しい答えに変えることをお勧めします。今日、fullscreenControlは動作しましたが、fullScreenControlは動作しませんでした。

0
Nic Howard