css - 谷歌全屏 map 有垂直滚动条

标签 css google-maps-api-3

我正在尝试使用 Javascript API 构建一个全屏 Google map ,我有点成功了,唯一我想去掉的是垂直滚动条。

这是我在 index.php 中的代码:

<!DOCTYPE html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=yes" />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>LiebensMittel...weil das Herz mitisst!</title>
    <link rel="stylesheet" href="style.css" type="text/css">
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAwsmcd75BCfaB9-VmeO5Q4mGK1aJ7f6Lk" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[

    var customIcons = {
      bakery: {
        name: 'Backwaren',
        icon: 'http://localhost/img/customMapIcons/bakery.png'
      },
      meat: {
        name: 'Fleisch',
        icon: 'http://localhost/img/customMapIcons/meat.png'
      },
      fish: {
        name: 'Fisch / Meeresfrüchte',
        icon: 'http://localhost/img/customMapIcons/fish.png'
      },
      fruit: {
        name: 'Obst / Früchte',
        icon: 'http://localhost/img/customMapIcons/fruit.png'
      },
      other: {
        name: 'Sonstiges',
        icon: 'http://localhost/img/customMapIcons/other.png'
      }
    };

    var mapStyles =[
    {
        featureType: "poi",
        elementType: "labels",
        stylers: [
              { visibility: "off" }
            ]
        }
    ];

    var mapOptions = {
        zoom: 12,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        disableDefaultUI: true,
        styles: mapStyles
    };

    function load() {
        var map = new google.maps.Map(document.getElementById('map'),{
        center: new google.maps.LatLng(53.5508, 9.9928),
        zoom: 13,
        mapTypeControl: false,
        streetViewControl: false
      });
        var infoWindow = new google.maps.InfoWindow;
            downloadUrl("genxml.php", function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var storename = markers[i].getAttribute("storename");
          var addressline_1 = markers[i].getAttribute("addressline_1");
          var addressline_2 = markers[i].getAttribute("addressline_2");
          var storetype = markers[i].getAttribute("storetype");
          var phonenumber = markers[i].getAttribute("phonenumber");
          var mailaddress = markers[i].getAttribute("mailaddress");
          var webpage = markers[i].getAttribute("webpage");
          var from_mon = markers[i].getAttribute("from_mon");
          var to_mon = markers[i].getAttribute("to_mon");
          var from_tue = markers[i].getAttribute("from_tue");
          var to_tue = markers[i].getAttribute("to_tue");
          var from_wed = markers[i].getAttribute("from_wed");
          var to_wed = markers[i].getAttribute("to_wed");
          var from_thu = markers[i].getAttribute("from_thu");
          var to_thu = markers[i].getAttribute("to_thu");
          var from_fri = markers[i].getAttribute("from_fri");
          var to_fri = markers[i].getAttribute("to_fri");
          var from_sat = markers[i].getAttribute("from_sat");
          var to_sat = markers[i].getAttribute("to_sat");
          var from_sun = markers[i].getAttribute("from_sun");
          var to_sun = markers[i].getAttribute("to_sun");

          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lng")));
          var html = '<table  style="width: 100%;"  border="0">'+
      '<tbody>'+
        '<tr>'+
          '<td  style="text-align: left; vertical-align: top;">'+
            '<h1>' + storename + '</h1>'+
            '<p>' + addressline_1 + '</p>'+
            '<p>' + addressline_2 + '</p><br>'+
            '<p>' + phonenumber + '</p><br>'+
            '<a  href="mailto:' + mailaddress + '">Email schreiben</a><br>'+
            '<a  target="_blank"  href="' + webpage + '">Webseite</a></td>'+
          '<td  style="text-align: left; vertical-align: top;"><img  alt="Liebensmittel.de" src="http://localhost/img/infoWindowIcons/lm_logo_small.png">'+
          '<br><b>Öffnungszeiten</b><br>'+
            '<table  style="width: 100%"  border="0">'+
              '<tbody>'+
                '<tr>'+
                  '<td>Montag</td>'+
                  '<td>' + from_mon + ' - ' + to_mon + '</td>'+
                '</tr>'+
                '<tr>'+
                  '<td>Dienstag</td>'+
                  '<td>' + from_tue + ' - ' + to_tue + '</td>'+
                '</tr>'+
                '<tr>'+
                  '<td>Mittwoch</td>'+
                  '<td>' + from_wed + ' - ' + to_wed + '</td>'+
                '</tr>'+
                '<tr>'+
                  '<td>Donnerstag</td>'+
                  '<td>' + from_thu + ' - ' + to_thu + '</td>'+
                '</tr>'+
                '<tr>'+
                  '<td>Freitag</td>'+
                  '<td>' + from_fri + ' - ' + to_fri + '</td>'+
                '</tr>'+
                '<tr>'+
                  '<td>Samstag</td>'+
                  '<td>' + from_sat + ' - ' + to_sat + '</td>'+
                '</tr>'+
                '<tr>'+
                  '<td>Sonntag</td>'+
                  '<td>' + from_sun + ' - ' + to_sun + '</td>'+
                '</tr>'+
              '</tbody>'+
            '</table>'+
            '<br>'+
          '</td>'+
        '</tr>'+
      '</tbody>'+
    '</table>';


          var icon = customIcons[storetype] || {};
          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon
          });
          bindInfoWindow(marker, map, infoWindow, html);
        }
      });
    }

    function bindInfoWindow(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
      });
    }

    function downloadUrl(url, callback) {
      var request = window.ActiveXObject ?
          new ActiveXObject('Microsoft.XMLHTTP') :
          new XMLHttpRequest;

      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          request.onreadystatechange = doNothing;
          callback(request, request.status);
        }
      };

      request.open('GET', url, true);
      request.send(null);
    }

    function doNothing() {}
    //]]>
  </script>
  </head>
  <body onload="load()">
    <div id="map"></div>
  </body>
</html>

这是 style.css:

html, body {
    height: 100%;
}

#map{
width:100%;
height:100%;
position: absolute;
top: 0px;
left: 0px;
}

我注意到,当我向下滚动滚动条时,底部有几个像素厚的白色区域。

我的想法是,用我的菜鸟的话来说,我的全屏 map div 向下推了另一个元素,这导致了滚动条......但我对 CSS 几乎一无所知,所以这只是一个猜测。

谁能指出我错误所在的正确方向?

如果我留下了一些重要的东西,请询问更多细节,请耐心等待,我是这个论坛和网页设计的新手:)

最好的问候 罗尔夫

最佳答案

添加填充:0; margin: 0; 到你的 CSS。

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
} 

fiddle with original CSS

fiddle with updated CSS

代码片段:

var customIcons = {
  bakery: {
    name: 'Backwaren',
    icon: 'http://localhost/img/customMapIcons/bakery.png'
  },
  meat: {
    name: 'Fleisch',
    icon: 'http://localhost/img/customMapIcons/meat.png'
  },
  fish: {
    name: 'Fisch / Meeresfrüchte',
    icon: 'http://localhost/img/customMapIcons/fish.png'
  },
  fruit: {
    name: 'Obst / Früchte',
    icon: 'http://localhost/img/customMapIcons/fruit.png'
  },
  other: {
    name: 'Sonstiges',
    icon: 'http://localhost/img/customMapIcons/other.png'
  }
};

var mapStyles = [{
  featureType: "poi",
  elementType: "labels",
  stylers: [{
    visibility: "off"
  }]
}];

var mapOptions = {
  zoom: 12,
  mapTypeId: google.maps.MapTypeId.ROADMAP,
  disableDefaultUI: true,
  styles: mapStyles
};

function load() {
  var map = new google.maps.Map(document.getElementById('map'), {
    center: new google.maps.LatLng(53.5508, 9.9928),
    zoom: 13,
    mapTypeControl: false,
    streetViewControl: false
  });
  var infoWindow = new google.maps.InfoWindow;
  downloadUrl("genxml.php", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
      var storename = markers[i].getAttribute("storename");
      var addressline_1 = markers[i].getAttribute("addressline_1");
      var addressline_2 = markers[i].getAttribute("addressline_2");
      var storetype = markers[i].getAttribute("storetype");
      var phonenumber = markers[i].getAttribute("phonenumber");
      var mailaddress = markers[i].getAttribute("mailaddress");
      var webpage = markers[i].getAttribute("webpage");
      var from_mon = markers[i].getAttribute("from_mon");
      var to_mon = markers[i].getAttribute("to_mon");
      var from_tue = markers[i].getAttribute("from_tue");
      var to_tue = markers[i].getAttribute("to_tue");
      var from_wed = markers[i].getAttribute("from_wed");
      var to_wed = markers[i].getAttribute("to_wed");
      var from_thu = markers[i].getAttribute("from_thu");
      var to_thu = markers[i].getAttribute("to_thu");
      var from_fri = markers[i].getAttribute("from_fri");
      var to_fri = markers[i].getAttribute("to_fri");
      var from_sat = markers[i].getAttribute("from_sat");
      var to_sat = markers[i].getAttribute("to_sat");
      var from_sun = markers[i].getAttribute("from_sun");
      var to_sun = markers[i].getAttribute("to_sun");

      var point = new google.maps.LatLng(
        parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lng")));
      var html = '<table  style="width: 100%;"  border="0">' +
        '<tbody>' +
        '<tr>' +
        '<td  style="text-align: left; vertical-align: top;">' +
        '<h1>' + storename + '</h1>' +
        '<p>' + addressline_1 + '</p>' +
        '<p>' + addressline_2 + '</p><br>' +
        '<p>' + phonenumber + '</p><br>' +
        '<a  href="mailto:' + mailaddress + '">Email schreiben</a><br>' +
        '<a  target="_blank"  href="' + webpage + '">Webseite</a></td>' +
        '<td  style="text-align: left; vertical-align: top;"><img  alt="Liebensmittel.de" src="http://localhost/img/infoWindowIcons/lm_logo_small.png">' +
        '<br><b>Öffnungszeiten</b><br>' +
        '<table  style="width: 100%"  border="0">' +
        '<tbody>' +
        '<tr>' +
        '<td>Montag</td>' +
        '<td>' + from_mon + ' - ' + to_mon + '</td>' +
        '</tr>' +
        '<tr>' +
        '<td>Dienstag</td>' +
        '<td>' + from_tue + ' - ' + to_tue + '</td>' +
        '</tr>' +
        '<tr>' +
        '<td>Mittwoch</td>' +
        '<td>' + from_wed + ' - ' + to_wed + '</td>' +
        '</tr>' +
        '<tr>' +
        '<td>Donnerstag</td>' +
        '<td>' + from_thu + ' - ' + to_thu + '</td>' +
        '</tr>' +
        '<tr>' +
        '<td>Freitag</td>' +
        '<td>' + from_fri + ' - ' + to_fri + '</td>' +
        '</tr>' +
        '<tr>' +
        '<td>Samstag</td>' +
        '<td>' + from_sat + ' - ' + to_sat + '</td>' +
        '</tr>' +
        '<tr>' +
        '<td>Sonntag</td>' +
        '<td>' + from_sun + ' - ' + to_sun + '</td>' +
        '</tr>' +
        '</tbody>' +
        '</table>' +
        '<br>' +
        '</td>' +
        '</tr>' +
        '</tbody>' +
        '</table>';


      var icon = customIcons[storetype] || {};
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon
      });
      bindInfoWindow(marker, map, infoWindow, html);
    }
  });
}

function bindInfoWindow(marker, map, infoWindow, html) {
  google.maps.event.addListener(marker, 'click', function() {
    infoWindow.setContent(html);
    infoWindow.open(map, marker);
  });
}

function downloadUrl(url, callback) {
  var request = window.ActiveXObject ?
    new ActiveXObject('Microsoft.XMLHTTP') :
    new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request, request.status);
    }
  };

  request.open('GET', url, true);
  request.send(null);
}

function doNothing() {}
google.maps.event.addDomListener(window, 'load', load);
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}
#map {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0px;
  left: 0px;
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map"></div>

关于css - 谷歌全屏 map 有垂直滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043553/

相关文章:

javascript - Gideon Sundback zipper 涂鸦 [Google,4 月 24 日] 完全是 javascript 吗?

html - <ul> <li> 带框/div

javascript - maxfilesexceeded 事件未在 dropzone js 中触发

javascript - 添加删除圆圈按钮

javascript - 在使其可见之前告知 Google map 圆圈对象何时移动

html - 可以避免在 div 中使用这些空格吗?

javascript - Bootstrap 轮播滑动时为导航栏文本添加运动模糊

angular - 在谷歌地图上显示 Angular 2 Agm 的方向

javascript - 地理编码限制问题

javascript - 如何转换 Google map 中的自定义叠加层以考虑投影?