如何使用Bootstrap嵌入Google地图?

5
我希望在我的联系页面的“地图和方向”中添加一个地图。我按照谷歌地图嵌入的步骤一步一步尝试,但是它没有工作,我无法查看地图。我正在使用Bootstrap。
这是我的标记:
    <head>
      <script type='text/javascript' src="http://maps.googleapis.com/maps/api/js?sensor=false&extension=.js&output=embed"></script>
      <script>
    $(document).ready(function() {

        var myCenter=new google.maps.LatLng(45.992261, -123.925014);
        var marker=new google.maps.Marker({
            position:myCenter
        });

        function initialize() {
          var mapProp = {
              center:myCenter,
              zoom: 14,
              draggable: false,
              scrollwheel: false,
              mapTypeId:google.maps.MapTypeId.ROADMAP
          };

          var map=new google.maps.Map(document.getElementById("map-canvas"),mapProp);
          marker.setMap(map);

          google.maps.event.addListener(marker, 'click', function() {

            infowindow.setContent(contentString);
            infowindow.open(map, marker);

          }); 
        };

        $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
            initialize();
        });

    });
    </script>
   <style type="text/css">
        #map-canvas {
            height:500px;
         }
    </style>
  <head>
    <div class="tab-content">
        <div class="tab-pane fade" id="map">
            <div class="col-md-5">
                <h4 class="h4">Find Us at Google Map</h4>               
            </div>
            <div id="map-canvas" class="col-md-7">
            </div>
        </div>
    </div>

1
请将这两个脚本放在HEAD标签中。确保在CSS中定义地图容器的宽度和高度。 - Th3Alchemist
shown.bs.tab事件的处理程序中重新初始化地图。 - cvrebert
请参见https://dev59.com/gG855IYBdhLWcg3w75Iv#6879644。 - cvrebert
@cvrebert,我也跟着你的链接尝试显示地图,但没有成功。 - Xubayer pantho
3个回答

6
致敬@ymakux的评论“最好使用内置类”,我曾经在SO上搜寻了很久,想要让Google地图整齐地适配Bootstrap div,而您的答案完美无瑕!因此,对于像我这样的新手,在使用具有Bopotstrap功能的地图时,可以利用Google提供的示例代码,位于https://developers.google.com/maps/documentation/javascript/geolocation
在地图div之前添加div,类似于@ymakux所建议的方式:
<div class="embed-responsive embed-responsive-4by3">
<div id="map-container" class="embed-responsive-item">
<div id="map">
</div>
</div> 
</div>`

谢谢 - 现在已经修复了,但是@ymakux需要得到赞誉 - 他的评论就像这个帖子中的传说中的大海捞针一样,拯救了我。 - Jase

5
尝试这段代码,它对于Bootstrap很有效:

尝试这段代码,它对于Bootstrap非常有效。

function initialize() {
            var mapOptions = {
                center: new google.maps.LatLng(28.1823294, -82.352912),
                zoom: 9,
                mapTypeId: google.maps.MapTypeId.HYBRID,
                scrollwheel: false,
                draggable: false,
                panControl: true,
                zoomControl: true,
                mapTypeControl: true,
                scaleControl: true,
                streetViewControl: true,
                overviewMapControl: true,
                rotateControl: true,
            };
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
        }
google.maps.event.addDomListener(window, 'load', initialize);
#contactform .btn:hover {
  background: rgba(9,8,77,0.7);
}

#map-canvas {
  width: 100%;
  height: 300px;
  margin-bottom: 15px;
  border: 2px solid #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
            
<div id="map-canvas"></div>
    
<!--Google Maps API-->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDnycWatbGyK6ldFqErjFtko1yeMclNUOA&amp;sensor=true"></script>

请使用正确的 Google 地图 API,您可以从 Google 地图控制台获取它。

-1

你的Bootstrap元素正在阻止地图的显示。

<div>        
  <div style="border: 1px solid red;">
      <h4 class="h4">Find Us at Google Map</h4>               
  </div>
  <div id="map-container">
    <script src="http://maps.google.com/maps/api/js?sensor=false"></script>
  </div>     
</div>

一点CSS

#map-container{
    height: 500px;
    width: 500px;
}

您的地图将会显示出来。

我也不会把您的地图调用放在HEAD标签中。让页面加载,然后再加载地图。

当您的地图显示出来后,慢慢添加Bootstrap组件,因为它们可能会对Google地图产生一些奇怪的影响。特别是网格布局。如果您保留了网格布局但看不到地图,请调整浏览器大小(点击角落并拖动它),然后您应该能够找到最佳位置来显示地图。


1
最好使用内置类 <div class="embed-responsive embed-responsive-4by3"> <div id="map-container" class="embed-responsive-item"></div></div> - ymakux

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接