Действие инициализации gmap3 не отображает карту должным образом в hid div - PullRequest
2 голосов
/ 01 марта 2012

Я думаю, что мне действительно следует публиковать новый вопрос, а не отвечать на закрытое сообщение.

Здесь у меня есть две вкладки для 2 карт.Один спрятан.Они оба начинаются пустыми и идентичными, поэтому я использую селектор gmap3 для инициализации обеих карт за один раз.нажатие на вкладки вызовет соответствующую карту без повторной инициализации.Благодаря Philar и MattBall при использовании изменения размера исправлена ​​одна проблема с отображением.Однако карта, которая изначально скрыта, смещена от центра и имеет другой уровень масштабирования.Понятия не имею, почему.У кого-нибудь есть идеи?Вот код.

function initmap() {  
// setup map and basic overlay
$('.gmap').gmap3(
    { action: 'init',
        options: {
            zoom: DefaultZoom,
            minZoom: DefaultMinZoom,
            center: mapcenter,
            mapTypeId: google.maps.MapTypeId.TERRAIN,
            scrollwheel: false,
            rotateControl: false,
            zoomControl: true,
            zoomControlOptions: {
                position: google.maps.ControlPosition.RIGHT_TOP,
                style: "SMALL"
            },
            panControl: false,
            panControlOptions: {
                position: google.maps.ControlPosition.RIGHT_TOP,
                style: "SMALL"
            },
            streetViewControl: false,
            heading: 90
        }
    },
    { action: 'addGroundOverlay',
        url: '../maps/assets/sectors_color.png',
        bounds: [
            [49.313821, -123.022082],
            [49.199900, -123.264825]
        ],
        tag: 'SectorMapOverlay'
    }
);
map1 = $(mapID1).gmap3('get');
map2 = $(mapID2).gmap3('get');
$("#switchmap").click(function () {google.maps.event.trigger(map1, 'resize')});
$("#switchmap2").click(function () {google.maps.event.trigger(map2, 'resize')});
}

1 Ответ

4 голосов
/ 24 января 2013

Или вы можете сделать это вручную:

map = $("#foo-map").gmap3('get');
google.maps.event.trigger(map, 'resize');
map.setZoom(map.getZoom());
map.panToBounds(map.getBounds());
...