Карты Google: показать открытые информационные блоки / всплывающие окна - PullRequest
1 голос
/ 15 мая 2011

Я хочу, чтобы некоторая базовая информация о городах была доступна на карте Google.Идея состоит в том, что когда люди открывают карту, они видят уже открытую информацию вместо того, чтобы нажимать на каждый маркер.И все же я не могу понять, возможно ли это.Я прошел все образцы и не видел, чтобы это использовалось.Существует ли такая опция?Я прилагаю визуальный образец своих намерений.enter image description here

Ответы [ 2 ]

1 голос
/ 16 мая 2011

Просто переберите данные вашего маркера при инициализации и создайте информационные окна на основе местоположения маркера.

<html>
    <head>

        <script type="text/javascript" src= "http://maps.google.com/maps/api/js?sensor=false"></script>
        <script>
            var map;
            //this json contains your raw data as well as space to store created marker and infowindow objects 
            info = [{
                "content": "content 1",
                "coords":[-34.397, 150.644],
                "marker":null,
                "infowindow": null
            },{
                "content": "content 2",
                "coords":[-34.597, 150.644],
                "marker":null,
                "infowindow": null
            }]

            function initialize() {

                var latlng = new google.maps.LatLng(-34.397, 150.644);
                var myOptions = {
                    zoom: 8,
                    center: latlng,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                }
                map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

                for(i=0; i<info.length; i++) {
                    //create markers
                    pos = new google.maps.LatLng(info[i].coords[0],info[i].coords[1])

                    marker = new google.maps.Marker({
                        position: pos,
                        map: map
                    });
                    //store the marker object for later if you want, useful if you want to keep track of your objects or dynamically alter your objects
                    info[i].marker = marker
                    infowindow = new google.maps.InfoWindow({
                        content: info[i].content
                    });
                    //store info window object for later if you want, useful if you want to keep track of your objects or dynamically alter your objects
                    info[i].infowindow = infowindow;

                    infowindow.open(map,marker);
                }

            }
        </script>
    </head>
    <body onload="initialize()">
        <div id="map_canvas" style="width: 320px; height: 480px;">
        </div>
    </body>
</html>
1 голос
/ 15 мая 2011

Можете ли вы перебрать все ваши объекты Marker и вызвать setVisible (true)?Это то, что я бы попробовал (я знаком только с V3 API), например

var marker = new google.maps.Marker({map: map, position:map.getCenter()});
 marker.setVisible(true);

В приведенном выше примере показано, как сделать это для одного маркера, но вы можете сделать это для всех маркеров (может быть, держать их в структуре данных и перебирать их)

...