Маркеры GoogleMap не активируются на мобильных устройствах - PullRequest
2 голосов
/ 25 января 2012

GoogleMap Маркеры не активируются на мобильных устройствах (сенсорные экраны).
Но, ладно, на любом ПК, так что я не могу понять, в чем смысл.
Вот мой код:

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

var locations = [
                    ['4lvin', 60.074433, -44.011917],
                    ['5irius', 60.037760, -44.100494]
                ];

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

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

    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            infowindow.setContent('<h2>'+locations[i][0]+'</h2>\n<a>Read more..</a>');
            infowindow.open(map, this);
        }
    })(marker, i));
}


Но затем, когда я использую следующие коды (формальный способ Google для "google.maps.event.addListener"), Маркеры показывают только то же самое InfoWindows .

    var infowindow = new google.maps.InfoWindow({content: locations[i][0]});
    new google.maps.event.addListener( marker, 'click', function() {
        infowindow.open(map,this);
    });

Ответы [ 2 ]

1 голос
/ 02 октября 2015

Я нашел следующее решение: 1. создать маркер с опцией

"optimized: false" : ex => new google.maps.Marker({..., optimized: false, ...});
добавление другого прослушивателя событий

google.maps.event.addDomListener(marker, "click", function() {...});

Из форума Google

1 голос
/ 25 января 2012

Проблема в том, что вы делаете цикл, вам нужно использовать замыкание, иначе все маркеры просто получат контент, который вы хотите связать с последним маркером.Ваш первый бит кода делает это правильно.Предложите вам сделать то же самое снова:

var infowindow = new google.maps.InfoWindow({content: locations[i][0]});
google.maps.event.addListener( marker, 'click', function(marker, i) {
  return function() {
    infowindow.setContent(locations[i][0]);
    infowindow.open(map,this);
  }
})(marker, i));
...