javascript - 增加 map 容器大小的宽度而不移动 map

标签 javascript jquery google-maps-api-3

我的项目中有一个 map View 页面,其中包含谷歌地图。在我的完整 View 中, map 容器占用侧容器的 70%(宽度)和 30%(宽度),侧容器是与 map 标记对应的 ListView 。侧面容器的右上角有一个箭头按钮,每当我单击该按钮时,侧面容器应隐藏, map 容器应显示在完整 View 中(从 70% 到 100%)不移动 map .

最佳答案

您需要采取三个步骤。

  1. 使用 JavaScript 调整 map 容器的大小
  2. 计算 map 中心的像素偏移并将其应用到 map
  3. 触发调整大小事件以加载之前未显示的图 block

下面是一个工作示例(请在 JSFiddle 上查看它)。

HTML

<div id="map"></div>
<button id="toggle">Toggle</button>

CSS

#map {
    width: 70%;
    height: ...
}

JavaScript

var state = 0;

$(document).ready(function() {
    var map = new google.maps.Map(document.getElementById('map'), {
        center: new google.maps.LatLng(52.5167, 13.3833),
        zoom:   11
    });

    $('#toggle').click(function() {
        var width, offste;

        if ((state++ % 2) == 0) {
            width = 100;
            offset = $('#map').outerWidth() * (1.0 - 1.0 / 0.7) / 2.0 ;
        } else {
            width = 70;
            offset = $('#map').outerWidth() * (1.0 - 0.7) / 2.0 ;
        }

        $('#map').css('width', width + '%'); 
        map.panBy(offset, 0);
        google.maps.event.trigger(map, 'resize');
    });
});

请注意,您可能需要根据您的特定情况调整宽度和偏移计算。

关于javascript - 增加 map 容器大小的宽度而不移动 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903400/

相关文章:

javascript - 使用pdfkit生成pdf文件并发送到nodejs-expressjs中的浏览器

javascript - Firebase 的云函数 : how to read data from Database synchronously?

javascript - 使用 Twitter 登录生成 token

javascript - Google map 折线上的符号始终旋转

javascript - Google Maps API V3 - 防止 ImageMapType 换行

javascript - 使用变换比例将 div 放在 div 的中间

javascript - 流程中的密封案例类

javascript - 收到ajax响应时通知更新

javascript - 替换 jQuery 或 javascript 中所有出现的字符

javascript - 多个自定义标记上的 google maps api v3 信息窗口中的动态内容