Не получается вывести балун для маркеров после кластеризации google maps

13zone

Профессор
Регистрация
22 Ноя 2008
Сообщения
203
Реакции
45
целый день ковыряюсь и что-то никак не получается (( нужно вывести информационное окно для маркера при клике на нем.. вот код (без инфоокна). уже пробовал разные варианты, не работает ничего. туплю..

Код:
var icons = { // свои иконки для каждого типа обьекта
    batarei: {
        icon: 'batarei.png'
    },
    makulatura: {
        icon: 'makulatura.png'
    },
    odejda: {
        icon: 'odejda.png'
    },
    metallolom: {
        icon: 'metallolom.png'
    },
    rtut: {
        icon: 'mercury.png'
    },
    plastkr: {
        icon: 'plastkr.png'
    },
    plastbut: {
        icon: 'plastbut.png'
    },
    steklo: {
        icon: 'steklo.png'
    },
    shina: {
        icon: 'shina.png'
    },
    other: {
        icon: 'other.png'
    },
};
var infowindow = null;
var markers = [];
var nono = <?php echo json_encode($abons); ?>; // массив со всеми данными из базы - nono[i][9] текст для балуна маркера
var locations = <?=$point; ?>; // координаты всех маркеров
function initMap() {
map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(49.988546, 36.233000), // центр в Харькове
        zoom: 9,
        gridSize: 50,
        mapTypeControl: true,
        disableDefaultUI: true,
        zoomControl: true,
    });
    var markers = locations.map(function (location, i) {
        return new google.maps.Marker({
            position: location,
            map: map,
            icon: nono[i][3] + '.png',
            title: nono[i][4],
            labelAnchor: new google.maps.Point(3, 30),
            animation: google.maps.Animation.DROP

        });
        // маркеры падают на карту вразнобой
        function drop() {
            for (var i = 0; i < markerArray.length; i++) {
                setTimeout(function () {
                    addMarkerMethod();
                }, i * 300);
            }
        }
    });
    var markerCluster = new MarkerClusterer(map, markers,
        {
            imagePath: window.location.protocol + "//" + window.location.host + "/" + 'images/m'
        });
}
function newLocation(newLat,newLng)
{
    map.setCenter({
        lat : newLat,
        lng : newLng
    });
}
 
1) Do you have '<div id="map"></div>' somewhere in your page?
2) Are you calling google ?
Код:
<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>

Info: Для просмотра ссылки Войди или Зарегистрируйся
 
1) Do you have '<div id="map"></div>' somewhere in your page?
2) Are you calling google ?
Код:
<script async defer
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
    </script>

Info: Для просмотра ссылки Войди или Зарегистрируйся

1. конечно присутствует
2. все правильно, карта выводится, кластеризация идет, иконки для обьектов выводит, тайтл тоже выводит
3 посмотреть можно тут
Для просмотра ссылки Войди или Зарегистрируйся
 
Unfortunately i got no idea what $abons is...so i cant test out your code.
You need to add a click listener to each marker which opens the InfoWindow with that unique content.
Код:
var infoWin = new google.maps.InfoWindow();
var markers = locations.map(function(location, i) {
  var marker = new google.maps.Marker({
    position: location
  });
  google.maps.event.addListener(marker, 'click', function(evt) {
    infoWin.setContent(location.info);
    infoWin.open(map, marker);
  })
  return marker;
});

and then attach the listener (inside function initMap() !!)
Код:
google.maps.event.addDomListener(window, "load", initMap);

Example fiddle: Для просмотра ссылки Войди или Зарегистрируйся

But the above code will take the infowindow text from the Locations array...You need to modify it a bit, or just put the info in your locations array :)
 
Последнее редактирование:
уже по всякому делал, и не работало.. и по инструкции и в различных вариациях решений. - это решение работает

with me like and beer;) Thank you very much. Well, or invite to a beer - Ukraine, Kharkov.
 
Назад
Сверху