Вход Регистрация
Файл: plugins/google_map_location/static/js/map.js
Строк: 311
<?php
window
.PEEP_GoogleMap = function($, google)
{
    return function( 
elementId )
    {
        var 
self = this;

        var 
geocoder;
        var 
map;
        var 
marker = {};
        var 
infowindow = {};
        var 
infowindowState = [];
        var 
markerCluster = null;
        var 
lastBounds = null;

        var 
mapElementId = elementId;
        
this.initialize = function(options)
        {
            var 
params = options;

            if( !
params )
            {
                var 
latlng = new google.maps.LatLng(0, 0);

                
params = {
                    
zoom: 2,
                    
minZoom: 2,
                    
center: latlng,
                    
mapTypeId: google.maps.MapTypeId.ROADMAP,
                    
disableDefaultUI: false,
                    
draggable: false,
                    
mapTypeControl: false,
                    
overviewMapControl: false,
                    
panControl: false,
                    
rotateControl: false,
                    
scaleControl: false,
                    
scrollwheel: false,
                    
streetViewControl: false,
                    
zoomControl:false
                
};
            }

            
map = new google.maps.Map(document.getElementById(mapElementId), params);

            
//geocoder = new google.maps.Geocoder();
        
}

        
this.getMap = function()
        {
            return 
map;
        }

        
this.setCenter = function(lat, lon)
        {
            var 
latlng = new google.maps.LatLng(lat, lon);
            
map.setCenter(latlng);
        }

        
this.setZoom = function(zoom)
        {
            
map.setZoom(zoom);
        }
        
        
this.setOptions = function(options)
        {
            
map.setOptions(options);
        }

        
this.fitBounds = function(bounds)
        {
            
lastBounds = bounds;
            
map.fitBounds(bounds);
        }
        
        
this.resetLastBounds = function(bounds)
        {
            if ( 
lastBounds )
            {
                
map.fitBounds(lastBounds);
            }
        }

        
this.getBounds = function()
        {
            return 
map.getBounds();
        }

        
this.removeAllPoints = function()
        {            
            $.
each(marker, function(key,m){
                if ( 
m )
                {
                    if ( 
markerCluster )
                    {
                        
markerCluster.removeMarker_(m);
                    }
                    
m.setMap(null);
                }
            })
            
marker = {};
            
infowindow = {};
            
infowindowState = {};
        }

        
this.addPoint = function(lat, lon, title, windowContent, isOpen, customMarkerIconUrl)
        {
            var 
markerParams = {
                
//map: map
                //draggable: false
                //optimized: true
            
}
            
            if ( 
customMarkerIconUrl )
            {
                
markerParams.icon = customMarkerIconUrl;
            }
            
            
marker[lat + ' ' + lon] = new google.maps.Marker(markerParams);

            var 
latlng = new google.maps.LatLng(lat, lon);
            
marker[lat + ' ' + lon].setPosition(latlng);

            if ( 
title )
            {
                
marker[lat + ' ' + lon].setTitle(title);
            }

            if ( 
windowContent )
            {
               
infowindow[lat + ' ' + lon] = new InfoBubble({
                    
content: windowContent,
                    
shadowStyle: 0,
                    
padding: 9,
                    
backgroundColor: '#fff',
                    
borderRadius: 4,
                    
arrowSize: 10,
                    
maxHeight: 350,
                    
borderWidth: '4px',
                    
borderColor: '#fff',
                    
disableAutoPan: false,
                    
hideCloseButton: false,
                    
arrowPosition: 25,
                    
arrowStyle: 0,
                    
borderWidth: 0
                
});

                
//infowindow[lat + ' ' + lon].setContent(windowContent);

                
infowindowState[lat + ' ' + lon] = false;
                
                if ( 
isOpen )
                {
                    
infowindow[lat + ' ' + lon].open(map, marker[lat + ' ' + lon]);
                    
infowindowState[lat + ' ' + lon] = true;
                }

                    
google.maps.event.addListener(marker[lat + ' ' + lon], 'click', function() {
                    if( 
infowindowState[lat + ' ' + lon] )
                    {
                        
infowindow[lat + ' ' + lon].close();
                        
infowindowState[lat + ' ' + lon] = false;
                    }
                    else
                    {
                        
infowindow[lat + ' ' + lon].open(map, marker[lat + ' ' + lon]);
                        
infowindowState[lat + ' ' + lon] = true;
                        
                        $.
each( infowindow, function( key, value ) {
                            if ( 
value )
                            {
                                if ( 
key != lat + ' ' + lon )
                                {
                                    
value.close();
                                    
infowindowState[key] = false;
                                }
                            }
                        } );
                    }
                });

                
google.maps.event.addListener(infowindow[lat + ' ' + lon], 'closeclick', function() {
                    if( 
infowindowState[lat + ' ' + lon] )
                    {
                        
infowindow[lat + ' ' + lon].close();
                        
infowindowState[lat + ' ' + lon] = false;
                    }
                });
            }
        }

        
this.resize = function()
        {
            
google.maps.event.trigger(map, 'resize');
        }
        
        
this.createMarkerCluster = function()
        {
            
markerCluster = new MarkerClusterer(map, marker);
        }
        
        
this.displaySearchInput = function()
        {

            var 
centerControlDiv = document.createElement('div');
            var 
input = $("<div class='googlelocation_map_search_input_icon'>" + 
                    
"<span class='googlelocation_map_search_pin ic_googlelocation_map_search_pin'></span>" +
                
"</div>" + 
            
"<input type='text' class='googlelocation_map_search_input googlelocation_map_search_input_hide' />");
            
            var 
searchDiv = $(centerControlDiv);
            
            
searchDiv.addClass("googlelocation_map_search_input_div").append(input);
            
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(centerControlDiv);
            
            var 
autocomplite = $(centerControlDiv).find("input.googlelocation_map_search_input");
            var 
icon_div = $(centerControlDiv).find(".googlelocation_map_search_input_icon");
            var 
icon_span = icon_div.find("span");
            
            var 
geocoder = new google.maps.Geocoder();
            
            var 
data = autocomplite.autocomplete({
                
delay: 250,
                
matchContains: true,

                
source: function (request, response) {
                    
icon_span.removeClass('ic_googlelocation_map_search_pin');
                    
icon_span.addClass('peep_inprogress');

                    var 
geocoderParams = {
                        
'address': request.term
                    
}

                    
geocoder.geocode(geocoderParams, function (results, status) {

                        
icon_span.removeClass('peep_inprogress');
                        
icon_span.addClass('ic_googlelocation_map_search_pin');

                        
response($.map(results.slice(0, 5), function (item) {
                            return {
                                
label: item.formatted_address,
                                
value: item.formatted_address,
                                
item: item
                            
}
                        }));
                    })
                },
                
select: function (event, ui) {
                    
map.fitBounds(ui.item.item.geometry.viewport);
                }
            }).
data("ui-autocomplete");
            
            
data._resizeMenu = function() {
                    
this.menu.element.outerWidth( autocomplite.outerWidth() );
                    $(
this.menu.element).addClass("googlelocation_map_search_menu");
            };
            
            var 
func = data._renderItem;
            
data._renderItem = function( ul, item ) {
                var 
element = func(ul, item);
                
element.find("a").prepend("<span class='ic_googlelocation_menu_item_pin'>");
                return 
element;
            };
        }
    }
}(
locationJquey, google);

var 
PEEP_GoogleMap = window.PEEP_GoogleMap;
?>
Онлайн: 0
Реклама