google maps api infobox plugin and multiple markers

前端 未结 3 1117
南笙
南笙 2020-12-08 17:47

How can I create multiple markers with different content when using infobox plugin http://google-maps-utility-library-v3.googlecode.com/svn/trunk/infobox/examples/infobox-ba

相关标签:
3条回答
  • 2020-12-08 18:16

    For infobox toggle onclick replace :

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

    By :

    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 讨论(0)
  • 2020-12-08 18:18

    @DonamiteIsTnt your example is really helpful but markerData[i] doesn't have any property latLng i think use markerData[i].position. It worked for me.

    0 讨论(0)
  • 2020-12-08 18:19

    You just need to generate the markers with a factory of some sort, e.g:

    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" }
        ]);
    }
    

    Check out the full example with HTML and whatnot in this jsfiddle.

    0 讨论(0)
提交回复
热议问题