-1

http://www.bchomescondos.ca/properties/?city=Richmond&id=261681248 http://www.bchomescondos.ca/properties/?city=Richmond&id=261704393

以上是出现问题的示例链接。

实际问题是单击街景选项卡时未显示 Google 地图街景。起初我认为这是地图脚本的问题,但后来我发现(在 stackoverflow 中另一个线程的帮助下)问题出在 CSS 选项卡及其加载方式上。

不知何故,当路线图选项卡处于活动状态时,街景不会出现,而当街景选项卡处于活动状态时,路线图会出现扭曲。

有人告诉我,我必须在页面加载期间同时加载所有选项卡,然后隐藏我最初不想出现的选项卡。我想这需要我没有的 JS 或 jQuery 知识。

因此,如果有人可以帮助我,我将不胜感激。

我使用简单的 Gumby 框架来创建选项卡。代码和链接如下。

<div class="row">
    <div class="one columns"></div>

    <section class="ten columns tabs" style="margin: 20px 0;">         
        <ul class="tab-nav">
            <li class="active"><a href="#">Google Map</a></li>
            <li> <a href="#">Street View</a></li>
            <li><a href="#">Walk Score</a></li>
        </ul>
        <div class="tab-content active">
            <div id="map-canvas" style="height: 400px; border: 0.5px solid #000;">
            </div>
        </div>
       <div class="tab-content">
            <div id="pano" style="height: 400px; border: 0.5px solid #000;"></div>
        </div>
        <div class="tab-content">
            <div id="ws-walkscore-tile" style="height: 400px; border: 0.5px solid #000;"></div>
        </div>
        <script type='text/javascript' src='http://www.walkscore.com/tile/show-walkscore-tile.php'></script>            
    </section>

    <div class="one columns"></div>



Gumby 标签文档

**我没有为此部分添加任何其他内联 CSS 或 JS。如果您需要任何其他信息,请告诉我。

4

2 回答 2

2

地图不会渲染,因为它的大小是未知的,因为它是隐藏的。如果您可以在显示地图时触发一些代码,则以下代码将解决您的问题:

google.maps.event.trigger(document.getElementById('pano'), 'resize');

根据:https ://developers.google.com/maps/documentation/javascript/reference

于 2015-05-14T05:34:12.110 回答
1

谢谢大家的帮助。最后我想通了。顺便说一句,调整大小触发事件在我的情况下不起作用。

主要问题是在文档加载期间创建街景地图对象时,它不知道隐藏的 div。这就是它不起作用的原因。

代码将随之而来,但首先让我解释一下。我只是在锚元素的 onclick 事件上添加了一个函数,它使隐藏的选项卡可见。然后在该函数中,我创建了地图对象并且它起作用了。

function test() {
    var fenway = new google.maps.LatLng(49.040302200000000, -122.281688200000000)    
    var panoramaOptions = {
        position: fenway,
        pov: {
            heading: 34,
            pitch: 10
        }
    };
    var panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
    map.setStreetView(panorama);
}

现在的 HTML

<section class="ten columns tabs" style="margin: 20px 0;">      
  <ul class="tab-nav">
    <li class="active"><a href="#">Google Map</a></li>
    <li><a href="#" onclick="test()">Street View</a></li>
  </ul>
  <div class="tab-content active">
    <div id="map-canvas" style="height: 400px; border: 0.5px solid #000;">
    </div> 
  </div>
  <div class="tab-content">
    <div id="pano" style="height: 400px; border: 0.5px solid #000;"></div>
    </div>
</section>

我希望每个人都觉得这很有用。

于 2015-05-21T06:00:19.860 回答