通过<select> </select>在自定义街景全景图之间切换时创建链接

时间:2013-07-25 12:36:57

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

我有一张校园区的街景地图。我可以使用getCustomLinks创建的链接在这些区域中导航。但我现在已经坚持了一段时间:有没有办法通过选择组件在自定义街景全景图之间进行更改?我希望能够使用箭头在校园区域内导航,同时也能够跳转到选择组件中的任何全景图。箭头完美无缺。到目前为止,我已设法更改全景图

我的选择框

 <select onChange="onChange()" id="hamk_select" width="1000px">
  <option value="b_talo_piha">HAMK Visam&auml;ki</option>
  <option value="kirjasto">Kirjasto</option>
  <option value="c_talo_auditorio">Auditorio</option>
  </select>

的onChange() - 功能

function test(){
    d = document.getElementById("hamk_select").value;

    var  panoOptions = {        
      pano: d,
      visible: true,         
      panoProvider:  getCustomPanorama,
      scrollwheel: true,
      enableCloseButton: false,
      centerHeading: 270,
      disableDoubleClickZoom: true,
      zoomControl: true,
      zoomControlOptions: {
        style: google.maps.ZoomControlStyle.SMALL
    },

      pov: {
        heading: 130,
        pitch: 0
      },

      clickToGo: false,
      imageDateControl: false,
      panControl: false


    };


panorama = new  google.maps.StreetViewPanorama(document.getElementById('map_canvas'),panoOptions);

现在我无法创建正确的链接。在初始化方法中,类似于example at the documentation,eventListener被添加到&#39; links_changed&#39;事件和&#39; result.location.pano&#39;用于创建链接。

    streetviewService = new google.maps.StreetViewService();

    var radius = 50;
    streetviewService.getPanoramaByLocation(THE_ENTRY_LOCATION, radius,
        function(result, status) {
      if (status == google.maps.StreetViewStatus.OK) {

        google.maps.event.addListener(panorama, 'links_changed',
          function() {
            createCustomLinks(result.location.pano);
          });
      }
    });

我认为我应该使用get StreetViewService's getPanoramaById-method而不是getPanoramaByLocation。我试过这个,但是GET失败了(状态= UNKNOWN_ERROR,JavaScript控制台说:标题中没有找到404,所以显然有些东西不起作用。)

    streetviewService.getPanoramaById(panorama.getPano(),
        function(result, status) {
      if (status == google.maps.StreetViewStatus.OK) {

            createCustomLinks(result.location.pano);

      }
    });

调用createCustomLinks(d)也没有帮助,因为没有定义var链接。任何想法如何正确地做到这一点?

1 个答案:

答案 0 :(得分:1)

解决方案非常简单:只更改全景值并将其用作panorama.setOptions值以触发原始的“links_changed”事件。

function onChange(){

    d = document.getElementById("hamk_select").value;

    var  panoOptions =
     {      
      pano: d,        
     };   

    panorama.setOptions(panoOptions);


  }