Google Maps API плагин Infobox и несколько маркеров - PullRequest
8 голосов
/ 05 сентября 2011

Как создать несколько маркеров с различным содержимым при использовании плагина infobox http://google -maps-utility-library-v3.googlecode.com / svn / trunk / infobox / examples / infobox-basic.html

Я создавал var marker1, var marker2 и т. Д., Но я думаю, что это не очень хороший метод, и у меня одинаковое содержимое во всех информационных окнах ...

Ответы [ 3 ]

16 голосов
/ 15 сентября 2011

Вам просто нужно сгенерировать маркеры с какой-то фабрикой, например:

function initMarkers(map, markerData) {
    var newMarkers = []

    // Here's where all the really verbose code goes. Loop through `markerData` to
    // create each marker.  See the full code in the js fiddle

    return newMarkers;
}

function initialize_google_map() {
    //Here the call to initMarkers() is made with the necessary data for each marker.
    //All markers are then returned as an array into the markers variable, Usually you'd 
    //get the data from server or something, here it's just shown inline.

    var markers = initMarkers(map, [
        { latLng: new google.maps.LatLng(49.47216, -123.76307), address: "Address 1", state: "State 1" },
        { latLng: new google.maps.LatLng(49.47420, -123.75703), address: "Address 2", state: "State 2" },
        { latLng: new google.maps.LatLng(49.47530, -123.78040), address: "Address 3", state: "State 3" }
    ]);
}

Посмотрите полный пример с HTML и прочее в этом jsfiddle .

3 голосов
/ 26 сентября 2011

Для переключения инфобокса нажмите на кнопку:

google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
        newMarkers[i].infobox.open(theMap, this);
        theMap.panTo(markerData[i].latLng);
    }
})(marker, i));

По:

google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
        for ( h = 0; h < newMarkers.length; h++ ) {
            newMarkers[h].infobox.close();
        }
        newMarkers[i].infobox.open(theMap, this);
        theMap.panTo(markerData[i].latLng);
    }
})(marker, i));
0 голосов
/ 04 июля 2013

@ DonamiteIsTnt Ваш пример действительно полезен, но markerData [i] не имеет какого-либо свойства latLng, я думаю, используйте markerData [i] .position.У меня это сработало.

...