地图类型设置为“混合”时,Google Maps API v3无法绘制地图

时间:2018-09-11 12:09:58

标签: javascript google-maps google-maps-api-3

在mapTypeId设置为hybrid的情况下绘制此地图,它将绘制标记,但不绘制地图。如果将其设置为任何其他类型,则将绘制地图。

此外,如果我按F12键调出开发人员工具,地图也会绘制出来。

谁能让我知道我在做什么错。预先感谢您的帮助。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Hybrid Map</title>
    <style>
      #map { height: 100%; }
      html, body { height: 100%; margin: 0; padding: 0; }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

      function initMap() {
        var myLatLng = {lat: 42.31391, lng: -83.2032224};

        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: myLatLng,
          mapTypeId: 'hybrid'
        });

        var markerBounds = new google.maps.LatLngBounds();

        var markJson = [
        {Latitude: "42.34383937323032", Longitude: "-83.17619508650093", Accuracy: "24.0", Time: "09/08/2018 06:26:12"},
        {Latitude: "42.34386827380892", Longitude: "-83.17627864355015", Accuracy: "12.0", Time: "09/08/2018 06:26:14"},
        {Latitude: "42.343853008205535", Longitude: "-83.1763372997278", Accuracy: "4.0", Time: "09/08/2018 06:26:21"},
        {Latitude: "42.34387834632138", Longitude: "-83.1763972853329", Accuracy: "4.0", Time: "09/08/2018 06:26:47"},
        {Latitude: "42.343924132536046", Longitude: "-83.1763958907264", Accuracy: "6.0", Time: "09/08/2018 06:26:58"},
        {Latitude: "42.343914870976725", Longitude: "-83.17646834553283", Accuracy: "16.0", Time: "09/08/2018 06:27:10"},
        {Latitude: "42.34387223953695", Longitude: "-83.17649826835593", Accuracy: "16.0", Time: "09/08/2018 06:27:13"}
        ];

        markJson.forEach(function(item, index) {
            var newLatLng = new google.maps.LatLng(item.Latitude, item.Longitude);

            var marker = new google.maps.Marker({
            position: newLatLng,
            map: map
            });
            markerBounds.extend(marker.position);
        });     

        google.maps.event.addListenerOnce(map, "idle", function () {
            map.fitBounds(markerBounds);
    });
      }
    </script>
    <script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script>
  </body>
</html>

2 个答案:

答案 0 :(得分:0)

无论出于何种原因,当Google Maps执行fitBounds时,都会将缩放级别设置为22。在世界上这个位置,Google Maps的缩放级别没有图像22。将maxZoom设置为21初始化地图在这种情况下设置了问题。

    var map = new google.maps.Map(document.getElementById('map'), {
        maxZoom: 21,
        center: myLatLng,
        mapTypeId: 'hybrid'
    });

Google地图还提供了getMaxZoomAtLatLng函数,以查找特定纬度和经度的最大缩放级别。

答案 1 :(得分:-1)

您没有在脚本标签中添加API密钥:

<script async defer src="https://maps.googleapis.com/maps/api/js?key=[API KEY]&callback=initMap"></script>

您可以在这里获得一个:https://developers.google.com/maps/documentation/javascript/get-api-key