【问题标题】:TypeError marker.getPosition is not a functionTypeError marker.getPosition 不是函数
【发布时间】:2019-11-12 22:11:35
【问题描述】:

您好,当我运行以下代码时出现错误。我在哪里犯错? 如果您能提供帮助,我将不胜感激 提前致谢

错误:TypeError:marker.getPosition 不是函数

function initMap() {
var locations = [
      ['Bondi<br>Beach', -33.890542, 151.274856, 4],
      ['Coogee Beach', -33.923036, 151.259052, 5],
    ];

var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 10,
      center: new google.maps.LatLng(-33.92, 151.25),
      mapTypeId: google.maps.MapTypeId.ROADMAP
});

var infowindow = new google.maps.InfoWindow();
var markers, i;
for (i = 0; i < locations.length; i++) {  
      var markers = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][1], locations[i][2]),
        map: map
      });

      google.maps.event.addListener(markers, 'click', (function(markers, is) {
        return function() {
          infowindow.setContent(locations[is][0]);
          infowindow.open(map, markers);
        }
      })(markers, i));

      var markerCluster = new MarkerClusterer(map, markers,{imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
    }
}
<script src="https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/markerclusterer.js">
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=xxx&callback=initMap"></script>

【问题讨论】:

  • 你有什么错误吗?
  • 你的代码有很多问题。那是什么? (function(markers, is) ... 为什么调用包含 1 个标记“markers”的变量?你为什么要在你的循环创建你的集群,即。多次,每次只有 1 个标记?阅读文档或从众多可用示例之一开始怎么样?
  • 它应该是什么?

标签: javascript google-maps google-maps-markers markerclusterer


【解决方案1】:

试试下面的修改代码:

  function initMap() {
    var locations = [
      ["Bondi<br>Beach", -33.890542, 151.274856, 4],
      ["Coogee Beach", -33.923036, 151.259052, 5]
    ];

    var map = new google.maps.Map(document.getElementById("map"), {
      zoom: 10,
      center: new google.maps.LatLng(-33.92, 151.25),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    var infowindow = new google.maps.InfoWindow();
    var markers, i;
    for (i = 0; i < locations.length; i++) {
      var markers = locations.map(function(location, i) {
        var marker = new google.maps.Marker({
          position: new google.maps.LatLng(
            locations[i][1],
            locations[i][2]
          ),
          map: map
        });

        google.maps.event.addListener(
          marker,
          "click",
          (function(marker, is) {
            return function() {
              infowindow.setContent(locations[is][0]);
              infowindow.open(map, marker);
            };
          })(marker, i)
        );

        return marker;
      });

      var markerCluster = new MarkerClusterer(map, markers, {
        imagePath:
          "https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m"
      });
    }
  }

我建议您阅读 Google 的文档以了解如何正确添加带有标记集群的 Google 地图: https://developers.google.com/maps/documentation/javascript/marker-clustering

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 2020-06-29
    • 2020-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2021-06-05
    • 2019-10-03
    • 2017-03-06
    相关资源
    最近更新 更多