Centering Custom Google Map Pins

Discussion in 'JavaScript' started by 7643sfsag6, Nov 6, 2016.

  1. #1
    Hi All,

    I am having some big trouble trying to get my custom google map pins centered, and zoomed-in to show them all at the same time.

    Can anyone perhaps spot why this isn't working!?

    Here is the code below:

    Thanks !!!

    
    var scriptFolder = location.pathname.substr(0, location.pathname.lastIndexOf('/') + 1);
        var marker = [];
        var map;
        var lastZoom = 3;
        var lastSizeW = 40;
        var lastSizeH = 30;
    
        function initialize() {
            var styles = [
                {"elementType": "geometry", "stylers": [{"visibility": "no"}]}, {"elementType": "labels", "stylers": [{"visibility": "no"}]}, {"stylers": [{"color": "#ffffff"}, {"visibility": "yes"}]}, {}
                        ];
            var styledMap = new google.maps.StyledMapType(styles);
            var centerlatlng = new google.maps.LatLng(0, 0);
            var myOptions = {
                zoom: 3
                , center: centerlatlng
                , styles: styles
                , panControl: true
                , zoomControl: false
                , mapTypeControl: false
                , scaleControl: false
                , streetViewControl: false
                , overviewMapControl: false
                , rotateControl: true
                , disableDefaultUI: true
                , mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById("map"), myOptions);
            var zoomControlDiv = document.createElement('div');
            var zoomControl = new ZoomControl(zoomControlDiv, map);
            var image_bar = document.getElementById("pin_image_bar");
            zoomControlDiv.index = 1;
            map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(zoomControlDiv);
            map.controls[google.maps.ControlPosition.RIGHT_TOP].push(image_bar);
            createMarker();
            google.maps.event.addDomListener(map, 'zoom_changed', function () {
                var zoom = map.getZoom();
                if (zoom > lastZoom) {
                    lastSizeW = lastSizeW + 40;
                    lastSizeH = lastSizeH + 30;
                    for (i in marker) {
                        var image = new google.maps.MarkerImage(scriptFolder + "" + pins.Image, null, null, null, new google.maps.Size(lastSizeW, lastSizeH));
                        marker.setIcon(image);
                    }
                }
                else {
                    if (lastSizeW != 40 && lastSizeH != 30) {
                        lastSizeW = lastSizeW - 40;
                        lastSizeH = lastSizeH - 30;
                    }
                    for (i in marker) {
                        var image = new google.maps.MarkerImage(scriptFolder + "" + pins.Image, null, null, null, new google.maps.Size(lastSizeW, lastSizeH));
                        marker.setIcon(image);
                    }
                }
                lastZoom = zoom;
            });
            $('#map').children().closest('div').append(' <video loop="" autoplay="" poster="image_xi_logo_01.png" style="position: absolute; top: 50%; left: 50%; -webkit-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); min-width: 100%; min-height: 100%; width: auto; height: auto; overflow: hidden;opacity:0.7;"><source src="video_xi_bg_05a.webm" type="video/webm"> </video>');
      $('.gm-style').children().children().closest('div').addClass('pins');
        }
    
      
        function createMarker() {
            var bounds = new google.maps.LatLngBounds();
            for (i in pins) {
                var position = new google.maps.LatLng(pins.Lat, pins.Lng);
                var image = new google.maps.MarkerImage(scriptFolder + "" + pins.Image, null, /* size is determined at runtime */ null, /* origin is 0,0 */ null, /* anchor is bottom center of the scaled image */ new google.maps.Size(lastSizeW, lastSizeH));
                marker = new google.maps.Marker({
                    map: map
                    , title: pins.Name
                    , position: position
                    , icon: image
                });
                /*var content = '<div id="iw-container">';
                content += '<div class="iw-title">'+pins.Info.Title+'</div>';
                content += '<div class="iw-content">';
                content += '<div class="iw-subTitle">'+pins.Info.Content.Title+'</div>';
                content += '<img src="images/'+pins.Image+'" alt="'+pins.Info.Title+'" height="115" width="83">';
                content += '<p>'+pins.Info.Content.Detail+'</p>';
                content += '</div>';
                content += '<div class="iw-bottom-gradient"></div>';
                content += '</div>';*/
                bounds.extend(marker.getPosition());
                marker.pinDetail = pins;
                        google.maps.event.addListener(marker, 'click', function () {
                    $("#pname").html(this.pinDetail.Name);
                    var image = "<img src='" + this.pinDetail.Image + "' style='visibility:visible;'/>"
                    $("#pimage").html(image);
                    $("#ptitle").html(this.pinDetail.Info.Title);
                    $("#pcontent").html(this.pinDetail.Info.Content);
                    document.getElementById('pin_image_bar').style.display='';
                    document.getElementById('overlay').style.display='';
                    $('#overlay').show();
                    $('#pin_image_bar').show();
                });
            }
    
        }
        function ZoomControl(controlDiv, map) {}
    
    Code (markup):
     
    7643sfsag6, Nov 6, 2016 IP
  2. 7643sfsag6

    7643sfsag6 Member

    Messages:
    58
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    43
    #2
    i've just answered my own question by adding directly after "var bounds = new google.maps.LatLngBounds();" the following:

    map.fitBounds(bounds);  
    map.panToBounds(bounds);  
    Code (markup):
     
    7643sfsag6, Nov 6, 2016 IP
    sarahk likes this.