在infowindow中显示时检查街景

遵循此示例http://www.keypointpartners.com/test/mab/fromxml1.html和Google Maps API v3文档(https://developers.google.com/maps/documentation/javascript/streetview)我已经放在一起一个从XML文件加载标记并为每个加载的标记显示标签infowindow的地图。 希望检查一个位置是否有可用的街景,我已将我的createMarker修改为:


    function createMarker(latlng, name, html) {
      //var contentString = html;

      var contentString = [
        '',
        '',
        name,
        '',
        '',
          '
  • Località
  • ', '
  • Struttura
  • ', '
  • Voli
  • ', //'
  • Opzioni
  • ', '
  • Streetview
  • ', '', html, '' ].join(''); // Create a marker var marker = new google.maps.Marker({ position: latlng, title: name, map: inc_map }); // Add a listener to the marker to populate and open the infowindow google.maps.event.addListener(marker, 'click', function() { infowindow.setContent(contentString); infowindow.open(inc_map, marker); google.maps.event.addListener(infowindow, 'domready', function() { inc_sv.getPanoramaByLocation(marker.position, 50, processSVData); //console.log("Adding tabs"); $('#tabs').tabs(); }); });

    getPanoramaByLocation使用的Tha回调函数如下所示:

    
        function processSVData(data, status) {
          if (status == google.maps.StreetViewStatus.OK) {
            google.maps.event.addListener(infowindow, 'domready', function() {
              $('#stv-lnk').click(function() {
                var panoramaOptions = {
                  position: data.location.latLng, 
                  visible: true,
                  linksControl: false,
                  panControl: false,
                  addressControl: false,
                  zoomControlOptions: {
                    style: google.maps.ZoomControlStyle.SMALL
                  },
                  enableCloseButton: false
                };
                var panorama = new google.maps.StreetViewPanorama(document.getElementById("stvpano"), panoramaOptions);  
                inc_map.setStreetView(panorama);
              });
            });
            } else {
            google.maps.event.addListener(infowindow, 'domready', function() {
              $('#stv-lnk').click(function() {});
              document.getElementById("stvpano").innerHTML = "Streetview non è disponibile per questo luogo"
              });
              }
        }
    
    

    现在,发生的情况是,第一个街景视图选项卡不显示任何内容,而下一个单击的街景视图选项卡显示前一个选项卡的街景视图。 与API文档中的上述示例相比,我为每个选项卡构建了一个单独的StreetViewPanorama对象(而示例使用全局全景变量var来保存它)。 这是我的错误吗? 要么...? 链接在实际页面:http://turom-mice.it/condorincentive/incentive.html

    任何帮助/建议非常感谢! 欢呼声,皮疹*

    编辑 :好的,我解决了其中一个问题。 我嵌套了太多的eventListener:我删除了函数processSVData中的那些,并且每个infowindow都会显示正确的街景。 代码现在看起来像这样:

    
        function processSVData(data, status) {
          if (status == google.maps.StreetViewStatus.OK) {
            $('#stv-lnk').click(function() {
              var panoramaOptions = {
                position: data.location.latLng, 
                visible: true,
                linksControl: false,
                panControl: false,
                addressControl: true,
                zoomControlOptions: {
                  style: google.maps.ZoomControlStyle.SMALL
                },
                enableCloseButton: false
              };
              var panorama = new google.maps.StreetViewPanorama(document.getElementById("stvpano"), panoramaOptions); 
             inc_map.setStreetView(panorama);
            });
           } else {
            $('#stv-lnk').click(function() {
               inc_map.setStreetView(null);
               document.getElementById("stvpano").innerHTML = "Streetview non è disponibile per questo luogo"
            });
            }
        }
    

    现在,问题是'else'分支似乎什么都不做:当一个位置没有可用的街景时,你会看到最后显示的街景,无论我将它设置为null,并在div内放置一些警告文本(我应该显示尽管链接到替代画廊页面)。 问题是:这是正确的吗? 要么...?

    像往常一样,任何帮助/提示/建议...

    Ciao,皮疹*

    编辑2 :好的,完全解决。 else分支没有管理点击事件,因此解决了它。 上面的代码已被编辑以反映解决方案。

    无论如何,等待答案让我重新考虑整个事情。 希望这可以对任何人有所帮助。

    皮疹*

    链接地址: http://www.djcxy.com/p/35855.html

    上一篇: Check streetview exists when displaying it in infowindow

    下一篇: Google Maps API Multiple Markers with Infowindows