【问题标题】:Uncaught ReferenceError: google is not defined when placing pins未捕获的 ReferenceError:放置引脚时未定义 google
【发布时间】:2020-03-06 18:54:56
【问题描述】:

我不断收到未定义的 google。仅当我尝试将图钉放在地图上时才会发生这种情况。在我在 initMap() 函数之后添加所有行之前,地图显示良好,没有错误。我看过类似的帖子,但没有一个答案能解决我的问题。感谢您提前提供任何建议

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="maps.css">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tabletop.js/1.5.1/tabletop.min.js"></script>
    <script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPduELA=" crossorigin="anonymous"></script>
    <script type="text/javascript" src="maps.js"></script>
    <title>Dr Office Data</title>

  </head>
  <body>

      <div class="pageContainer">
          <div id="map"></div>
      </div>
      <div class="sortContainer">
          <button type="button" name="button">Click to Show Summary Markers</button>
          <div class="stateDropdown">
              <label for="stateList">Select a State</label>
              <select class="" name="states">
                  <option value="ALL">All</option>
                  <option value="AL">Alabama</option>
                  <option value="CO">Colorado</option>
                  <option value="MS">Mississippi</option>
              </select>
          </div>
      </div>


    <script src="https://maps.googleapis.com/maps/api/js?key=MYKEY&callback=initMap"
    async defer></script>
  </body>
</html>




```
var markerData = [["FIRST","LAST","ADDRESS","PHONE",39.6387797,-104.8007541],["FIRST","LAST","ADDRESS","PHONE",39.6125868,-105.1377128],["FIRST","LAST","ADDRESS","PHONE",30.6940368,-88.0945316]]


var map;
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
      zoom: 4,
   center: new google.maps.LatLng(37.09024, -95.712891)
  });
}

var infowindow = new google.maps.InfoWindow;

var marker, i;

for (i = 0; i < markerData.length; i++) {
    marker = new google.maps.Marker({
         position: new google.maps.LatLng(markerData[i][4], markerData[i][5]),
         map: map
    });;

}
```

【问题讨论】:

  • 任何使用 Google 地图 API 的代码都需要在回调函数中,因此在加载 API 之前不会执行。

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


【解决方案1】:

就像 Geocodezip 所说,您的地图相关代码需要放在回调函数中,以确保 API 在代码执行之前已加载。试试这个working jsfiddle。完整代码如下:

<!DOCTYPE html>
<html>

  <head>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <title>Dr Office Data</title>
  </head>

  <body>

    <div class="pageContainer">
      <div id="map" style="height:400px;width:400px;"></div>
    </div>
    <div class="sortContainer">
      <button type="button" name="button">Click to Show Summary Markers</button>
      <div class="stateDropdown">
        <label for="stateList">Select a State</label>
        <select class="" name="states">
          <option value="ALL">All</option>
          <option value="AL">Alabama</option>
          <option value="CO">Colorado</option>
          <option value="MS">Mississippi</option>
        </select>
      </div>
    </div>

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

    <script>
      var markerData = [
        ["FIRST", "LAST", "ADDRESS", "PHONE", 39.6387797, -104.8007541],
        ["FIRST", "LAST", "ADDRESS", "PHONE", 39.6125868, -105.1377128],
        ["FIRST", "LAST", "ADDRESS", "PHONE", 30.6940368, -88.0945316]
      ];

      var map;

      function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: new google.maps.LatLng(37.09024, -95.712891)
        });

        var infowindow = new google.maps.InfoWindow();

        var marker, i;

        for (i = 0; i < markerData.length; i++) {
          marker = new google.maps.Marker({
            position: new google.maps.LatLng(markerData[i][4], markerData[i][5]),
            map: map
          });
        }
      }

    </script>

  </body>

</html>

希望这会有所帮助!

【讨论】:

  • 我在看到您的回复之前发现了错误。感谢您的回复。我只需要移动 initMap 函数中的所有代码。
  • 很高兴听到! :)
猜你喜欢
  • 2012-09-12
  • 2020-10-04
  • 2015-12-18
  • 1970-01-01
  • 2023-01-23
  • 2019-03-22
  • 1970-01-01
  • 2016-11-03
  • 2011-01-05
相关资源
最近更新 更多