javascript - 谷歌地图 Bootstrap 3

标签 javascript html css twitter-bootstrap

我试图在我的谷歌地图 Canvas 下方放置两个按钮(其中一个是下拉按钮)。如果没有按钮标记,Google map 可以正常加载。当我添加按钮代码时, map 消失。 map 元素和按钮都位于相同的容器和列中,但位于不同的行上。

<div class="container-fluid pushdown">

  <div class="row">
    <div class="col-md-2"></div>
    <div class="col-md-8"><div class="map" id="map"></div></div>
    <div class="col-md-2"></div>
  </div>

  <div class="row">
    <div class="col-md-2"></div>
    <div class="col-md-8">
      <div id="controls">
        <button class="btn btn-default btn-lg dropdown-toggle location"type="button" data-toggle="dropdown"  aria-haspopup="true" aria-expanded="false">
          Select<span class="caret"></span>
        </button>
        <ul class="dropdown-menu">
          <li><input type="checkbox" class="Check" name="traders[]" value="1"/><label class="CheckText">Trader1</label></li>
          <li><input type="checkbox" class="traderCheck" name="traders[]" /><label class="traderCheckText">Trader2</label></li>
        </ul>
        <button onclick="location.href = 'search.html';" type="button" class="btn btn-default btn-lg" id="searchButton">Search <span class="glyphicon glyphicon-search"></span></button>
      </div>
    </div>
    <div class="col-md-2"></div>
  </div>

</div>

还有 JS:

function initMap() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 16,
    disableDefaultUI: true
  });

  var marker = new google.maps.Marker({
    position: {lat: -34.397, lng: 150.644},
    draggable:true
  });

  // Try HTML5 geolocation.
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      var pos = {
        lat: position.coords.latitude,
        lng: position.coords.longitude
      };
      map.setCenter(pos);
      marker.setPosition(pos);
      marker.setMap(map);
    }, function() {
      handleLocationError(true, infoWindow, map.getCenter());
    });
  } else {
    // Browser doesn't support Geolocation
    handleLocationError(false, infoWindow, map.getCenter());
  }
}

function handleLocationError(browserHasGeolocation, infoWindow, pos) {
  infoWindow.setPosition(pos);
  infoWindow.setContent(browserHasGeolocation ?
    'Error: The Geolocation service failed.' :
    'Error: Your browser doesn\'t support geolocation.');
}

map 元素 CSS:

.map {
  width: 100%;
  height: 500px;
  background-color: blue;
}

另外,我尝试只使用第二行的 3 列(没有按钮元素),然后 map 消失了。这意味着我的问题出在 Bootstrap 上。

最佳答案

试试这个方法。

function initMap() {
   var map = new google.maps.Map(document.getElementById('map'), {
      center: {lat: -34.397, lng: 150.644},
      zoom: 16,
      disableDefaultUI: true
   });

   var marker = new google.maps.Marker({
      position: {lat: -34.397, lng: 150.644},
      draggable:true
   });

   // Try HTML5 geolocation.
   if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function(position) {
         var pos = {
            lat: position.coords.latitude,
            lng: position.coords.longitude
          };

          map.setCenter(pos);
          marker.setPosition(pos);
          marker.setMap(map);
      }, function() {
          handleLocationError(true, infoWindow, map.getCenter());
      });
   } else {
      // Browser doesn't support Geolocation
      handleLocationError(false, infoWindow, map.getCenter());
   }
}

function handleLocationError(browserHasGeolocation, infoWindow, pos) {
   infoWindow.setPosition(pos);
   infoWindow.setContent(browserHasGeolocation ?
    'Error: The Geolocation service failed.' :
    'Error: Your browser doesn\'t support geolocation.');
}
 
    </script>

    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCrwOEvG-QIFrYPBCwRVTvXvSuzcnz38Xs&signed_in=true&callback=initMap"
        async defer>
    </script>   
.map{
   width: 100%;
   height: 500px;
   background-color: blue;
}   
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="container-fluid pushdown">
   <div class="row">
      <div class="col-md-2"></div>
      <div class="col-md-8"><div class="map" id="map"></div></div>
      <div class="col-md-2"></div>
   </div>

   <div class="row">
      <div class="col-md-2"></div>
      <div class="col-md-8">
         <div id="controls">

            <button class="btn btn-default btn-lg dropdown-toggle location"type="button" data-toggle="dropdown"  aria-haspopup="true" aria-expanded="false">
  Select<span class="caret"></span>
            </button>

            <ul class="dropdown-menu">
               <li>
                  <input type="checkbox" class="Check" name="traders[]" value="1"/>
                  <label class="CheckText">Trader1</label></li>

               <li>
                  <input type="checkbox" class="traderCheck" name="traders[]" />
                  <label class="traderCheckText">Trader2</label></li>
            </ul>

            <button onclick="location.href = 'search.html';" type="button" class="btn btn-default btn-lg" id="searchButton">Search <span class="glyphicon glyphicon-search"></span></button>

      </div>
</div>
<div class="col-md-2"></div>

关于javascript - 谷歌地图 Bootstrap 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613357/

相关文章:

html - Bootstrap 4 SCSS 覆盖不起作用

javascript - JQuery:识别表格文本框列中的重复值并突出显示文本框

javascript - 我的数字函数的 javascript 验证无法正常工作

javascript - 为什么这两个函数调用彼此不相等?

javascript - Angularjs 中的温度中位数

java - 如何使用jsp返回AJAX响应?

javascript - 检查 localStorage 中的值是否以字符串和 console.log() 值名称开头

css - Chrome float 问题(Firefox 和 IE 工作正常)

html - 用链接包裹的图像上的同级选择器

php - 将我的网站设置为公开后图像出现错误