【问题标题】:Google fullscreen map has vertical scrollbar谷歌全屏地图有垂直滚动条
【发布时间】:2016-03-16 18:04:17
【问题描述】:

我正在尝试使用 Javascript API 构建全屏谷歌地图,我有点成功,我唯一想离开的就是垂直滚动条。

这是我在 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;
}

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

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

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

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

最好的问候 罗尔夫

【问题讨论】:

    标签: css google-maps-api-3


    【解决方案1】:

    padding: 0; margin: 0; 添加到您的 CSS。

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

    fiddle with original CSS

    fiddle with updated CSS

    代码 sn-p:

    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>

    【讨论】:

    • 这就像一个魅力!感谢您的帮助,我现在将阅读一些关于边距和填充的讲座以了解原因:)
    猜你喜欢
    • 2017-05-10
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多