1

我正在使用和改编来自Store Locator Library for Maps API的示例/演示。

我想在我的地图中添加集群标记。我认为与此相关的代码部分是:

var ICON = new google.maps.MarkerImage(pathImage, null, null, new google.maps.Point(14, 13)); var SHADOW = new google.maps.MarkerImage(pathShadow, null, null, new google.maps.Point(14, 13));

google.maps.event.addDomListener
    ( 
        window, 
        'load', 
        function()
        {
            var map = new google.maps.Map
                ( 
                    document.getElementById( canvasLoc ), 
                    {
                        center: new google.maps.LatLng( 53.64, -3.3  ), 
                        zoom: 6, 
                        navigationControlOptions: {
                        style: google.maps.NavigationControlStyle.SMALL},
                        mapTypeId: google.maps.MapTypeId.ROADMAP
                    }
                );

            var panelDiv = document.getElementById( panelLoc );
            var data = new CustomDataSource;

            var view = new storeLocator.View
                ( 
                    map, 
                    data, 
                    {
                        geolocation: false,
                        features: data.getFeatures()
                    }
                );
                map.setOptions({styles: styles});

            view.createMarker = 
                function( store )
                {
                    var markerOptions = 
                        {
                            position: store.getLocation(), 
                            icon: ICON, 
                            shadow: SHADOW, 
                            title: store.getDetails().title
                        };
                    return new google.maps.Marker( markerOptions );
                }

            var infoBubble = new InfoBubble({
            maxWidth: 300,
            arrowSize: 20,
            borderWidth: 8,
            borderColor: 'rgb(255,255,255)',
            backgroundColor: 'rgba(204,204,204, 0.7)'
            });

            view.getInfoWindow = 
                function( store )
                {
                    if( !store )
                    {
                        return infoBubble;
                    }

                    var details = store.getDetails();

                    var html = 
                        [
                            '<div class="store"><div class="title">', 
                            details.title,
                            '</div><div class="address">', 
                            details.address, 
                            '</div>',
                            '<div class="hours misc">', 
                            details.hours, 
                            '</div></div>'
                        ].join('');


                    infoBubble.setContent( $( html )[0] );

                    return infoBubble;
                };

            new storeLocator.Panel
                (
                    panelDiv, 
                    {
                        view: view
                    }
                );
        }
    );

以上取自custom.js

我无法确切地看到我应该将标记集群的代码放在哪里(此处给出的示例)。它说我需要将标记添加到数组中,并将其与地图一起传递给 MarkerClusterer 对象。

以下是我能想到的最好的:

                var view = new storeLocator.View
                ( 
                    map, 
                    data, 
                    {
                        geolocation: false,
                        features: data.getFeatures()
                    }
                );
                map.setOptions({styles: styles});

            var markers=[];
            view.createMarker = 
                function( store )
                {
                    var markerOptions = 
                        {
                            position: store.getLocation(), 
                            icon: ICON, 
                            shadow: SHADOW, 
                            title: store.getDetails().title
                        };
                    return new google.maps.Marker( markerOptions );
                }
                markers.push(view.createMarker);
                markerClusterer = new MarkerClusterer(map, markers)
4

0 回答 0