javascript - Google Maps Javascript API - 图例最大高度
问题描述
我正在使用 Google Maps Javascript API 显示地图,并创建了一个自定义图例来打开和关闭某些地图路径/标记。图例中的数据由 PHP 使用数据库中的条目加载,因此我无法控制将出现多少复选框。目前,图例 div 会根据需要扩展以适应需要的复选框,但我希望阻止它扩展到地图范围之外。
当我向上移动浏览器底部以降低屏幕高度时,它会将 div 绘制到屏幕底部之外:
有谁知道告诉 div 不要垂直扩展超出地图边缘的方法?我显然可以根据地图的高度设置一个最大高度值,减去图例 div 的顶部位置,但我正在寻找更原生的东西,可能沿着map.controls[google.maps.ControlPosition.LEFT_TOP].push(document.getElementById('mapLegend'));
但设置最底部的值? 这样,即使在移动设备或小屏幕上,地图也可以根据需要进行调整(例如在第二个屏幕截图中,Google 徽标显示在图例上方)。
我知道这是一个非常开放的问题,但我将不胜感激任何人可以提供的任何帮助或指示。
提前致谢。
解决方案
我最终使用 CSScalc
函数根据屏幕大小手动设置图例的最大高度。
.mapLegend {
height: auto;
max-height: calc(100vh - 175px); /* Top bar, plus height of Google logo at bottom, plus absolute top position of Legend div, plus buffer */
}
@media (max-height: 269px) {
.mapLegend {
height: auto;
max-height: calc(100vh - 120px); /* When screen <270px tall, some Google Maps controls are hidden, so legend moves up, so can expand further down the bottom */
}
}
通过将高度设置为自动,它将只需要容纳尽可能多的复选框所需的大小,并且最大高度会阻止溢出超出屏幕底部。请注意,在小屏幕上(或者当将高屏幕拖动以降低其高度时),Google Maps UI 会更改以隐藏一些非必要的控件,因此我添加了屏幕高度断点来满足这一点。
希望这可以帮助某人。
推荐阅读
- javascript - 将获取的数据作为道具(JSON)传递到状态以呈现数据
- java - Java 小程序运费计算器,如果低于 100 美元,不确定如何添加免费送货
- ios - Xcode 如何使用 TestFlight 从应用程序中符号化通过电子邮件发送的 .ips.beta 文件
- rest - REST Web 服务的 Bonjour 主机发现
- php - 我可以用函数结束 While 循环吗?
- python - 需要 Microsoft Visual C++ 14.0 - 错误 - pip install fbprophet
- python - 使用 pandas apply() 根据条件创建新列
- php - PHP - 字体回显问题
- php - Apache 和 IIS 之间的 PHP 脚本评估差异
- ubuntu - zfs ubuntu 18.04 上的 iozone 基准测试 - 错误:无法打开临时文件打开:无效参数