TypeError marker.getPosition не является функцией - PullRequest
0 голосов
/ 02 июля 2019

Привет, я получаю сообщение об ошибке при запуске следующего кода.Где я могу ошибиться?Буду признателен, если вы поможете заранее спасибо

Ошибка: Ошибка типа: 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>

1 Ответ

0 голосов
/ 10 июля 2019

Попробуйте следующий исправленный код:

  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

Надеюсь, это поможет!

...