2013-04-25 21 views
2

我有一個信息框內的按鈕。我想要那個按鈕切換到街景。該按鈕被觸發並切換到街景,但我的代碼將街景視爲完全分離的實體,以我的谷歌地圖,這意味着我無法縮小到地圖視圖,並且在街景視圖上沒有可見的標記:InfoBox按鈕切換到街景

 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); 

我該如何修改它,以便在當前地圖內觸發街景而不是創建完全分離的實例?

回答

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."); 
     } 
    }); 
1

希望這也可能是有用的。與我現有的地圖整合這其中:

map是我的谷歌地圖實例化類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); 
    }); 
0

爲setStreetView方法參數使用空將結合嵌入式街道視圖當前地圖(配有一個X關閉街道視圖,並返回到圖)。

this.gmap.setStreetView(); 

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

綁定的StreetViewPanorama的地圖。此全景覆蓋默認的StreetViewPanorama,允許地圖綁定到地圖外部的外部全景。將全景圖設置爲空可將默認嵌入式全景圖返回到地圖。

編輯:如果您有多個信息窗口,你可能需要使用這樣的功能,以便與標記的位置來更新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); 
}