Google Map Api v3,如何获取自定义信息框(自定义叠加层)列表? [英] Google Map Api v3, how to get list of custom InfoBoxes (custom Overlays)?

查看:124
本文介绍了Google Map Api v3,如何获取自定义信息框(自定义叠加层)列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用下一个链接.

如何获取已创建的叠加列表(或数组或其他内容)?

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.

推荐答案

您需要跟踪在数组中创建的叠加层,如果需要关闭其中的一些叠加层,则可以在数组中找到它们,然后setMap(null )或其他摆脱它们的方法(以下示例中的close()).为阵列中的标记或叠加层创建自定义ID很有用,这样您可以快速找到它们.

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.

以下是从Google Maps Utils库关闭自定义信息框的示例

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> 

这篇关于Google Map Api v3,如何获取自定义信息框(自定义叠加层)列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆