2016-09-20 55 views
0

对于我的提交表单,我使用了字段集,如果前一个字段集合有效,它们将向上滑动并向下滑动。 在字段集3中将会有一张谷歌地图的地图,根据经度和纬度定位客户的地址。谷歌地图在jQuery上无法在字段集中工作向上滑动或向下滑动

<fieldset id="werkgebied" style="display: none;"> 
               <div class="row"> 
                <div class="form-group"> 
                <label class="col-md-3 control-label" for="adres">Uw Adres</label> 
                 <div class="col-md-6" id="stapwerkgebied_adres"> 

                 </div> 
                </div> 
               </div> 
               <div class="row"> 
                <div class="form-group"> 

                 <label class="col-md-3 control-label" for="adres">Werkgebied</label> 
                 <div class="col-md-6"> 
                  <div id="kaartje" style="width:400px;height:400px;"></div> 

                  <script type="text/javascript"> 
                  var map; 
                  var centerpoint; 

                  function initmap(latvar=52.3747388,longvar=4.7585307){ 
                   var map = new google.maps.Map(document.getElementById('kaartje'), { 
                   center: {lat: Number(latvar), lng: Number(longvar)}, 
                   zoom: 9 
                  }); 
                  var kmRadius = $("#aantalkm").val(); 
                  circle = new google.maps.Circle({ 
                   center: {lat: Number(latvar), lng: Number(longvar)}, 
                   map: map, 
                   strokeColor: '#000', 
                   strokeWeight: 2, 
                   strokeOpacity: 0.5, 
                   fillColor: '#046e94', 
                   fillOpacity: 0.5, 
                   radius: kmRadius * 1000 
                  }); 
                  } 
                  function updateMarker(coord) { 
                   var kmRadius = $("#aantalkm").val(); 
                   circle.setRadius(kmRadius*1000); 
                  } 
                  </script> 
                  <script async defer 
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDnsp8B8c942fe8i42UEAImAcAoTbDVYN4&callback=initmap"> 
</script> 
                  </div> 
                 </div> 
                </div> 
                <div class="row"> 
                 <div class="form-group"> 
                  <label class="col-md-3 control-label" for="aantalkm">Afstand (km)</label> 
                   <div class="col-md-2"><input id="aantalkm" class="form-control" type="text" onChange="updateMarker()" value="20" /> 
                  </div> 
                 </div> 
                </div> 
                <div class="row"> 
                 <div class="form-group"> 
                 <label class="col-md-3 control-label" for="submit"></label> 
                   <div class="col-md-6"> 
                    <button type="button" id="werkgebied_prev" class="btn btn-primary mb-xl previous">Vorige</button> 
                    <button type="button" id="werkgebied_next" class="btn btn-primary mb-xl next">Verder</button> 
                   </div> 
                 </div> 
                </div> 
               </fieldset> 

当字段集3出现时,地图不起作用。如果我删除:

style="display: none;" 

该地图将工作,但不会隐藏,直到前两个字段集为止。

回答

0

这里的问题是在fieldset上设置的display:none样式。 Google地图需要目标元素才能正确初始化。在你的情况下,你可以做一个小窍门,并在飞行中创建谷歌地图的元素,使用css移出视口,等待地图完全初始化(为了您可以使用tilesloaded事件),并在之后将地图节点移动到您的fieldset。这里有一个小提琴可以帮助你https://jsfiddle.net/9a2nwe2b/1/

你可以看到fieldset被隐藏,并且在显示它之后,地图完全工作。