2

インフォボックス内にボタンがあります。そのボタンでストリートビューに切り替えたい。ボタンがトリガーされ、ストリート ビューに切り替わりますが、以下のコードは、ストリート ビューを Google マップとは完全に別のエンティティとして扱います。つまり、ズームアウトしてマップ ビューに戻すことはできず、ストリート ビュー レベルに目に見えるマーカーはありません。

        var fenway = new google.maps.LatLng(this.marker[id].position.jb,this.marker[id].position.kb);

    var panoramaOptions = {
        position: fenway,
        pov: {
            heading: 34,
            pitch: 10
        }
    };

    var panorama = new google.maps.StreetViewPanorama(document.getElementById("map-canvas"), panoramaOptions);
    this.gmap.setStreetView(panorama);

完全に別のインスタンスを作成するのではなく、現在のマップ内でストリートビューがトリガーされるようにするにはどうすればよいですか?

4

3 に答える 3

3

これは私のために働いた:

    var streetViewMaxDistance = 100;          

    var point = new google.maps.LatLng(this.marker[id].position.jb,this.marker[id].position.kb);
    var streetViewService = new google.maps.StreetViewService();
    var panorama = this.gmap.getStreetView();

    streetViewService.getPanoramaByLocation(point, streetViewMaxDistance, function (streetViewPanoramaData, status) {

        if(status === google.maps.StreetViewStatus.OK){

            var oldPoint = point;
            point = streetViewPanoramaData.location.latLng;

            var heading = google.maps.geometry.spherical.computeHeading(point,oldPoint);            

            panorama.setPosition(point);
            panorama.setPov({
                heading: heading,
                zoom: 1,
                pitch: 0
            });
            panorama.setVisible(true);

        }else{
            // no street view available in this range, or some error occurred
            console.log("Sorry! Street View is not available.");
        }
    });
于 2013-04-25T10:00:16.657 に答える
1

うまくいけば、これも役立つかもしれません。これを既存のマップと統合するには:

map私のGoogleマップのインスタンス化されたクラスですmap = new google.maps.Map(el,mapOptions)

pointer私のインスタンス化されたマーカーです:

    pointer = new google.maps.Marker({
        position: latLng,
        map: map
    });

latLng は次のとおりです。latLng = new google.maps.LatLng(lat, lng)

私がする必要があったのは、他のすべての下に次のコードを追加することだけでした。これは、マーカーのクリックをリッスンし、クリックするとストリート ビューが表示されるように設定します。

    var panorama = map.getStreetView();
    panorama.setPosition(latLng);
    panorama.setPov({
        heading: 45,
        pitch:-10}
    );

    google.maps.event.addListener(pointer, 'click', function() {
        panorama.setVisible(true);
    });
于 2014-03-02T11:22:44.807 に答える
0

setStreetView メソッド パラメーターに null を使用すると、埋め込まれたストリート ビューが現在のマップにバインドされます (ストリート ビューを閉じてマップに戻るには、X を付けます)。

this.gmap.setStreetView();

から: https://developers.google.com/maps/documentation/javascript/reference?csw=1#Map

StreetViewPanorama をマップにバインドします。このパノラマはデフォルトの StreetViewPanorama をオーバーライドし、マップをマップ外の外部パノラマにバインドできるようにします。パノラマを null に設定すると、デフォルトの埋め込みパノラマがマップにバインドされます。

編集: 複数の情報ウィンドウがある場合は、マーカーの位置で streeview を更新するために、次のような関数を使用する必要がある場合があります。

function streetview(location) {

    location = location.replace('(', '').replace(')', '');
    var lat = location.split(',')[0];
    var lng = location.split(',')[1];
    var latlng = new google.maps.LatLng(lat, lng);
    this.gmap.setStreetView();
    this.gmap.getStreetView().setPosition(latlng);
}
于 2014-05-21T17:03:24.937 に答える