首页 文章

Google Map API创建标记错误(Javascript API)

提问于
浏览
-1

我很难创建一个在谷歌 Map 上创建标记的功能 . 以下是我当前的javascript代码 .

如您所见,我使用“new google.maps.Map(document.getElementById('map')”创建了一个 Map .

然后我创建了一个“createMarker”函数,并试图通过传递“lat,lng,draggable”参数来使用该函数创建一个新标记 .

但是,当我运行它时,我不断得到“map.createMarker不是函数” .

有人可以帮我这个吗?

function initMap() {
  // var fullstack = {lat: 40.705523, lng: -74.009149};
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 18,
    maxZoom: 19,
    minZoom: 16 ,
    center: {lat: 40.705523, lng: -74.009149},
    disableDefaultUI: false
  });

  var marker = map.createMarker(40.705523, -74.009149, true);

  var createMarker = function(lat, lng, draggable) {
    return new google.maps.Marker({
      position: {
        lat: lat,
        lng: lng
      },
      map: map,
      draggable: draggable
    })
  }
}

2 回答

  • 1
    • 您的createMarker函数未与 Map 关联 . 将 map.createMarker(...) 更改为 createMarker(...)

    • 当您将函数声明为变量时,顺序很重要 . 您需要在使用之前声明该函数 .

    Working code snippet:

    function initMap() {
      // var fullstack = {lat: 40.705523, lng: -74.009149};
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 18,
        maxZoom: 19,
        minZoom: 16 ,
        center: {lat: 40.705523, lng: -74.009149},
        disableDefaultUI: false
      });
      var createMarker = function(lat, lng, draggable) {
        return new google.maps.Marker({
          position: {
            lat: lat,
            lng: lng
          },
          map: map,
          draggable: draggable
        })
      }
      var marker = createMarker(40.705523, -74.009149, true);
    }
    
    html,
    body,
    #map {
      height: 100%;
      width: 100%;
      margin: 0;
      padding: 0;
    }
    
    <script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script>
    <div id="map"></div>
    
  • -1

    createMarker不是一个函数,映射到map对象,尝试调用createMarker,就像我在这里做的那样 .

    function initMap() {
      // var fullstack = {lat: 40.705523, lng: -74.009149};
      var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 18,
        maxZoom: 19,
        minZoom: 16 ,
        center: {lat: 40.705523, lng: -74.009149},
        disableDefaultUI: false
      });
    
      var marker = createMarker(40.705523, -74.009149, true);
    
      var createMarker = function(lat, lng, draggable) {
        return new google.maps.Marker({
          position: {
            lat: lat,
            lng: lng
          },
          map: map,
          draggable: draggable
        })
      }
    }
    

相关问题