Създаване на връзки при превключване между персонализирани панорами на уличен изглед чрез ‹select›

Имам карта на 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);

Сега съм заседнал в създаването на правилните връзки. В метода за инициализация, подобен на примера в документацията eventListener се добавя към събитието 'links_changed' и 'result.location.pano' се използва за създаване на връзки.

    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 getPanoramaById-method на StreetViewService вместо getPanoramaByLocation. Опитах това, но GET се проваля (статус = UNKNOWN_ERROR, JavaScript конзолата казва: 404 Not Found в заглавката, така че очевидно нещо не работи.)

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

            createCustomLinks(result.location.pano);

      }
    });

Извикването просто createCustomLinks(d) също не помага, тъй като var links не е дефиниран. Някакви идеи как да направите това правилно?


person Pete TNT    schedule 25.07.2013    source източник


Отговори (1)


Решението беше абсурдно просто: променете само стойността на панорамата и я използвайте като стойността на panorama.setOptions, за да задействате оригиналното събитие „links_changed“.

function onChange(){

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

    var  panoOptions =
     {      
      pano: d,        
     };   

    panorama.setOptions(panoOptions);


  }
person Pete TNT    schedule 26.07.2013