Google Maps API v3 не рисует карту, когда установлен тип карты Гибрид - PullRequest
0 голосов
/ 11 сентября 2018

Рисование этой карты с mapTypeId, установленным на гибридное, рисует маркеры, но не карту. Если я установлю его на любой другой тип, карта будет рисоваться.

Кроме того, если я нажму 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 голосов
/ 05 апреля 2019

По любой причине, когда 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 для определения максимального уровня масштабирования на определенной широте и долготе.

0 голосов
/ 11 сентября 2018

У вас нет ключа 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...