Google Map Api v3, how to get list of custom InfoBoxes (custom Overlays)?

≡放荡痞女 提交于 2019-12-12 03:29:19

问题


i created custom overlays using next link.

how can i get a list of created overlays (or array, or whatever)?

i need it, because i need ability to close some of them.


回答1:


You need to keep track of which overlays you created in an array and if you need to close some of them you can find them in the array and setMap(null) on them or another method that gets rid of them (close() in the example below). It is useful to create a custom id for your markers or overlays in your array so you can quickly locate them.

Here is an example of closing a custom InfoBox from the Google Maps Utils Library

<html> 
<head> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script src="http://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/1.1/src/infobox.js"></script> 
<script type="text/javascript"> 

    //this is the array to store our custom objects in 
     ibArray = [];

    //standard stuff
    function initialize() {

        var secheltLoc = new google.maps.LatLng(49.47216, -123.76307);

        var myMapOptions = {
             zoom: 15
            ,center: secheltLoc
            ,mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var theMap = new google.maps.Map(document.getElementById("map_canvas"), myMapOptions);


        var marker = new google.maps.Marker({
          map: theMap
         ,position: new google.maps.LatLng(49.47216, -123.76307)
         ,visible: true
        });

        var boxText = document.createElement("div");
        boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
        boxText.innerHTML = "City Hall, Sechelt<br>British Columbia<br>Canada";

        var myOptions = {
             content: boxText
            ,disableAutoPan: false
            ,maxWidth: 0
            ,pixelOffset: new google.maps.Size(-140, 0)         
            ,zIndex: null
            ,boxStyle: { 
              background: "url('tipbox.gif') no-repeat"
              ,opacity: 0.75
              ,width: "280px"

             }
            ,closeBoxMargin: "10px 2px 2px 2px"
            ,closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif"
            ,infoBoxClearance: new google.maps.Size(1, 1)
            ,isHidden: false
            ,pane: "floatPane"
            ,enableEventPropagation: false

        };

        var ib = new InfoBox(myOptions);

        //store your info box in the array with a custom id - there are number of ways you can index this - it really depends on what you are doing
        //you will need to all your objects that you want to close later. 
        ibArray.push({myId:"1234",box: ib});        

        //open the box
        ib.open(theMap, marker);
    }

    //close the box with an id passed to this function
    function closeBox(id){

        for (i=0;i<ibArray.length;i++) {
            if (ibArray[i].myId==id){
                myBox = ibArray[i].box;
                myBox.close();
            }
        }
    }
</script> 

</head> 
<body onload="initialize()"> 
    <div id="map_canvas" style="width:100%; height:50%"></div> 
    <p> 
    <input type="button" value="close box with custom id" onclick="javascript:closeBox('1234')">
</body> 

</html> 


来源:https://stackoverflow.com/questions/3955395/google-map-api-v3-how-to-get-list-of-custom-infoboxes-custom-overlays

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!