2016-12-03 2 views
0

У меня есть карта, которую я пытался выяснить, добавив infoWindow в маркеры, которые живут в массиве, и я застрял. С одной картой и одним маркером я могу добавить информацию окно не проблема. Но для моей жизни я НЕ МОЖЕТ получить инфоокна для работы в моем массиве. Если бы кто-нибудь мог помочь мне заставить это работать, я был бы вечно великолепен. Мои намерения состоят в том, чтобы вытащить html внутри infowindows. Вот скрипка, где я нахожусь.Добавить infoWindows к нескольким маркерам в массиве

var map; 
var markers = []; 

function initMap() { 
    map = new google.maps.Map(document.getElementById('map_canvas'), { 
    zoom: 14, 
    center: new google.maps.LatLng(-33.91721, 151.22630), 
    mapTypeId: 'roadmap', 
    disableDefaultUI: true 
    }); 

    // var iconBase = <?php echo "'/images/markers/'"; ?>; 
    var icons = { 
    typea: { 
     icon: "http://maps.google.com/mapfiles/ms/micons/blue.png" 
    }, 
    typeb: { 
     icon: "http://maps.google.com/mapfiles/ms/micons/green.png" 
    }, 
    typec: { 
     icon: "http://maps.google.com/mapfiles/ms/micons/orange.png" 
    } 
    }; 

    function addMarker(feature) { 
    var marker = new google.maps.Marker({ 
     position: feature.position, 
     icon: icons[feature.type].icon, 
     map: map, 
     type: feature.type 
    }); 
    marker.addListener('click', function() { 
     //set zoom level 
     map.setZoom(20); 
     //center map 
     map.setCenter(marker.getPosition()); 
     alert("Testing"); 
    }); 
    markers.push(marker); 
    } 

    filterMarkers = function(getType) { 
    console.log(getType); 
    for (var i = 0; i < markers.length; i++) { 
     if (markers[i].type == getType || getType == "") { 
     markers[i].setVisible(true); 
     } else { 
     markers[i].setVisible(false); 
     } 
    } 
    } 

    var features = [{ 
    position: new google.maps.LatLng(-33.91721, 151.22630), 
    type: 'typea' 
    }, { 
    position: new google.maps.LatLng(-33.91539, 151.22820), 
    type: 'typeb' 
    }, { 
    position: new google.maps.LatLng(-33.91747, 151.22912), 
    type: 'typec' 
    }]; 

    for (var i = 0, feature; feature = features[i]; i++) { 
    addMarker(feature); 
    } 
} 
google.maps.event.addDomListener(window, "load", initMap); 

Полная рабочая скрипка: http://jsfiddle.net/h80vtmye/

+0

Я не вижу попыток в infowindows в коде, который вы опубликовали. – geocodezip

+0

Вы правы. Я достал код, создающий ошибки, в надежде, что смогу описать, что я делаю, в надежде, что кто-то сможет мне помочь. Во всяком случае, я начал работать. – oompahlumpa

ответ

1

GoogleMap не позволяет использовать InfoWindow подобный. Создайте единую копию информационного окна вместо того, чтобы поддерживать массив и задайте его с помощью infowindow.setContent() во время mouseover события маркера.

+0

Спасибо, это была моя проблема .. Я пытался загрузить несколько окон вместо одного IW и загружать контент через мой цикл. – oompahlumpa

Смежные вопросы