fitBounds() 显示整个地球(如果地图先隐藏然后显示)

2024-05-05

I have a bunch or markers, and I want to show only the area containing them. I found a long list of similar questions (see at the bottom of the post for some), but none of the solutions works for me. The LatLngBounds is built correctly, but when I call fitBounds the result will be the following: after calling fitBounds() Instead of: what should be Can anybody spot an evident error in my code?

var opt = {
    zoom: 8,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"),opt);
var box = new google.maps.LatLngBounds();
for(var i=0;i<list.length;i++){
    var p = new google.maps.LatLng(list[i].lat,list[i].lon);
    var marker = new google.maps.Marker({
        position: p,
        map: map
    });
    box.extend(p);
}
map.fitBounds(box);
map.panToBounds(box);

我阅读和尝试过的一些帖子(列表不全面):

  • Google 地图 v3 - 自动缩放级别? https://stackoverflow.com/questions/3245564/google-maps-v3-automating-zoom-level
  • 谷歌地图V3自定义标记图像和fitBounds() https://stackoverflow.com/questions/10676140/google-maps-v3-custom-marker-images-and-fitbounds
  • 带 fitBounds 的 Google 地图无法缩放 https://stackoverflow.com/questions/8565539/google-maps-with-fitbounds-dont-zoom
  • Google 地图 api V3 中的 fitbounds() 不适合边界 https://stackoverflow.com/questions/2494756/fitbounds-in-google-maps-api-v3-does-not-fit-bounds

Edit: this actually happens if (as I do in my application) the map is at first hidden, and showed only later. I hide it in this way:

$('#map').hide();

并显示它:

$('#map').show(function(){
  //this is necessary because otherwise
  //the map will show up in the upper left corner 
  //until a window resize takes place
  google.maps.event.trigger(map, 'resize');
});

关于为什么会发生这种情况以及如何防止这种情况的任何线索(除了首次显示时初始化地图之外)?

顺便说一句,如果我在声明地图对象时设置缩放和居中(即我不使用fitBounds())那么即使在隐藏/显示之后,地图也会正确显示。 不过,我无法设置缩放和居中,因为点列表是在其他地方检索的,而且我事先不知道它们在哪里。


解决了(虽然不是很好的方式)。 我最终做的是初始化LatLngBounds加载页面时使用点,但仅在显示地图时平移和缩放。这样就可以正常工作了。 例如。

var box;
function init(){
  var opt = {
      zoom: 8,
      mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById("map"),opt);
  box = new google.maps.LatLngBounds();
  for(var i=0;i<list.length;i++){
      var p = new google.maps.LatLng(list[i].lat,list[i].lon);
      var marker = new google.maps.Marker({
          position: p,
          map: map
      });
      box.extend(p);
  }
}

然后,稍后(例如单击按钮)

function showMap(){
  $('#map').show(function(){
    google.maps.event.trigger(map, 'resize');
    map.fitBounds(box);
    map.panToBounds(box);
  });
}

它有效,但我不喜欢让全局变量闲逛。我使用 OpenLayers 实现了完全相同的行为,并且它可以正常工作,而不需要这种 hack。如果有人有更好的解决方案,请发布,如果有效,我会接受。

感谢@Engineer 和@Matt Handy 帮助我消除了一个可能的错误来源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fitBounds() 显示整个地球(如果地图先隐藏然后显示) 的相关文章

  • while 循环中 regex.exec() 赋值的更好解决方案

    这里有更好的解决方案吗 我尽量避免里面的作业while但仍然能够循环匹配并使用捕获的组 var match var CSS URL PATTERN url s s s s gm while match CSS URL PATTERN exe
  • nodejs:process.stdout.write 的短别名

    我正在学习nodejs 而且我喜欢它 我试图弄清楚如何使用更短的别名console log我发现我可以使用var cout console log并使用cout string 从那时起 然后当我想使用process stdout write
  • Google 使用 Angular JS 放置自动完成功能

    我试图让谷歌地点自动完成与 Angular JS 一起工作 这是jsfiddle http jsfiddle net punchouty cTD2a 2 place change 事件后模型未更新 它正在根据输入的变化进行更新 下面是 ht
  • nuxt如何访问javascript文件中的env

    我无法在 nuxt 2 15 之外访问我的环境变量 当我部署时我可以看到 nuxt context config在浏览器中有正确的变量 但在自定义js文件中我无法访问process env baseURL它返回未定义 nuxt config
  • iOS Javascript DOM“冻结?”

    这里有几个问题 有没有办法阻止 iOS 在滚动时冻结页面上的 javascript 当您在另一个选项卡中或切换应用程序时 iOS 是否会冻结 JavaScript iOS 上还有其他主要的 javascript 限制吗 iOS 6 x 会暂
  • 从一个页面导航到另一个页面时,JavaScript 不会执行

    我正在构建我的第一个 Ruby on Rails 应用程序 并尝试创建一个动画导航栏 我正在使用 jQuery 和 Turbolink 这是我的application js under app assets javascripts docu
  • 从 iframe 关闭父弹出窗口

    在domain1 com 上 我有一个链接 可以打开domain2 com 的弹出窗口 弹出窗口中有一个 iframe 也托管在 domain2 com 上 在 iframe 中 我试图关闭弹出窗口 我似乎对如何做到这一点感到困惑 在 if
  • Android 4.3 的 Google 地图 Android API V2 问题

    我是谷歌地图的新手 刚刚点击此链接http www androidhive info 2013 08 android working with google maps v2 http www androidhive info 2013 08
  • 克隆元素对应表单中所有元素的事件

    我成功克隆了表行 其中包含从数据库检索的值 不过我对它没有什么问题 我对所有元素使用了类 因为克隆会重复 ID 不会出现问题 因为它无法唯一地定位每个元素 使每个元素 行在这里唯一的方法是什么 功能如何工作 当第一次选择框时 所选 ID 的
  • 如何在html中创建字体选择栏

    我想创建一个下拉菜单 在其中我们可以看到所有可用的字体 并且可以选择我们选择的任何字体 我还想创建一个字体颜色选择小部件 存在大量的字体样式 我想知道如何获取所有这些字体以及如何创建一个小部件 用户可以使用该小部件选择他选择的颜色 为了创建
  • 监听外部事件。 Bash 到 NodeJS 的桥梁

    在 NodeJS 进程内部 我如何监听来自 bash 的事件 例如 NodeJS side obj on something function data console log data Bash side do something Hel
  • 从画布保存/转换后文件质量下降的问题

    这是我正在使用的代码 代码位于这篇文章的底部 但这里是链接GitHubGist Noitidart ff addon snippet browseForBadgeThenCreateSaveAnApply js https gist git
  • 如何使用Javascript获取ASP.NEt Web Forms标签的值?

    我有以下标签控件
  • 类型错误:require.config 不是一个函数

    我正在使用 require js 作为早午餐项目的一部分 这段代码抛出错误 require config require config is not a function paths jquery lib jquery underscore
  • 从变量值动态设置 ng-controller

    我正在使用 AngularJs 和 NodeJS 开发一个应用程序 我对将控制器的名称设置为主控制器中的变量的值感到震惊 为了更好地解释它 我的 index html 看起来像这样 tbody tr td td td member task
  • Meteor JS:存储特定模板实例状态的最佳方法是什么?

    我正在学习 Meteor JS 中的会话和反应式数据源 它们非常适合设置全局 UI 状态 但是 我不知道如何将它们的范围限制到模板的特定实例 这就是我想做的 我的页面上有多个可内容编辑的元素 每个下面都有一个 编辑 按钮 当用户单击 编辑
  • Chrome + 另一个进程:进程间通信比 HTTP/XHR 请求更快?

    我有一个进程 1 对视频流进行实时图像处理 我需要在 Chrome 中的 HTML 页面中渲染该视频 同一台计算机上的进程 2 在canvas or img or videoHTML5 元素 由于我有 1000x1000 像素 x 3 字节
  • 通过均匀分布值来有效合并两个数组

    我见过许多问题 答案主题是通过交替值合并两个数组 他们是这样工作的 let array1 a b c d let array2 1 2 let outcome a 1 b 2 c d 但我希望输出更加高效 并且根据数组大小均匀分配值 exp
  • 表单帖子上的 asp.net mvc 编码

    我在我的 asp net mvc 表单 带有文本区域的 nicedit 中使用富文本编辑器 当我在帖子上提交表单时 因为它不是 html 编码的 我收到以下消息 从客户端检测到潜在危险的 Request Form 值 如何对 post 上的
  • Fancybox修改。如何修改 fancybox 以停止在每个画廊的最后一项? (画廊 1 画廊 2 等)[重复]

    这个问题在这里已经有答案了 我正在为我的照片库使用 fancybox 插件 我有多个包含更多项目 照片 的画廊 我想知道如何在点击每个画廊的最后一个项目时停止幻灯片放映 我的 fancybox js 没有被修改 谢谢 您需要添加该选项loo

随机推荐

  • 无法使用 Maven 编译简单的 Java 10 / Java 11 项目

    我有一个简单的 Maven 项目 src main java module info java pom xml pom xml
  • 将注册表中的版本号转换为System.Version?

    我正在从注册表中检索版本号 如下所示 rKey GetValue Version 现在我想将其转换为System Version object 我该怎么做呢 假设这是一个字符串 string versionText string rKey
  • Ruby 中的日期时间和时间之间的转换

    在 Ruby 中如何在 DateTime 和 Time 对象之间进行转换 require time require date t Time now d DateTime now dd DateTime parse t to s tt Tim
  • 对 git Push 运行单元测试,对 Pull 请求运行集成测试

    在构建 R 包时 我们使用 testthat 来编写测试 我们有 2 个文件 特定包的测试文件 特异性R 我们用它来确保所有包继续一起工作并且总体结果良好 整体R 当前 当我们推送到 github 或通过 Travis 创建 PR 时 都会
  • 正则表达式 VB.Net 正则表达式.替换

    我正在尝试执行一个简单的正则表达式查找和替换 在字符串中的一些数字后面添加一个制表符 如下所述 From a users 12345 badges To a users 12345 badges 我正在使用以下内容 s regex repl
  • 在 C# 中将参数传递给 .cmd 文件

    我有一个 cmd 文件 它要求用户输入 并根据该输入执行进一步的步骤 我正在尝试编写一个程序来在 C 中自动执行此过程 以便命令提示符在后台运行 不会弹出给用户 消除所有用户交互 并且传递参数 我参考了多个答案 但没有找到解决方案 我已经提
  • Pycharm jupyter笔记本wsl:Jupyter包未安装

    我想在 Pycharm 中使用 Jupyter 笔记本 项目解释器是来自 WSL ubuntu 18 04 内虚拟环境的 python2 7 Jupiter 软件包已正确安装在虚拟环境中 我可以通过以下方式运行它 jupyter noteb
  • XNA 2D 矢量角度 - 正确的计算方法是什么?

    在 2D 中的 XNA 中矢量角度的标准工作方式是什么 向右 0 度 向上 90 度 向左 180 度 向下 270 度 什么是 标准 实现 float VectortoAngle Vector2 vec and Vector2 Angle
  • 从 Hibernate 生成 SQL 脚本

    我正在为我的 Java Swing 应用程序使用 Hibernate 4 3 5 Final 并且我做了很多工作UDPATE INSERT and DELETE与它 在 HQL 中或与Criteria 现在 我想做的是导出对数据库所做的所有
  • vim - 如何删除 netrw?

    我正在测试https github com skwp dotfiles https github com skwp dotfiles 不幸的是它确实安装了很多我不想要的东西 例如 现在 使用空的 vimrc 当我打开 vim 时 我得到 N
  • 带有 Bokeh vbar 图的分类 y 轴和日期时间 x 轴

    我想使用散景绘制 vbar 图 其中 x 轴采用日期时间 y 轴采用分类值 最初我尝试了如下圆形图 import pandas as pd from datetime import datetime from dateutil parser
  • ReSharper API...呃...它在哪里?

    好吧 我一定正在享受金发时刻 但我一生都找不到去哪里 下载 ReSharper API 与我获得的项目一起使用here http devlicio us blogs hadi hariri archive 2010 01 12 writin
  • Caffe,在层中设置自定义权重

    I have a network In one place I want to use concat As on this picture 不幸的是 该网络无法训练 为了理解为什么我想连续改变权重 这意味着 FC4096 中的所有值一开始都
  • 自定义 WiX Burn 引导程序用户界面?

    我主要使用 WiX 3 6 创建一个安装包 这样我就可以利用Burn http en wikipedia org wiki WiX Burn引导功能 到目前为止 我已经将多个 MSI 软件包捆绑在一起 这些软件包将与内置引导程序应用程序一起
  • 如何使图像呈现出陈旧、布满灰尘、颜色褪色的外观?

    我有旧画的图像 这些画很旧 布满灰尘 颜色褪色 如图所示here https i stack imgur com xuoEF jpg 如何赋予任何图像这种 旧 外观 我找不到任何过滤器或 openCV 函数来实现这种类型的外观 EDIT 我
  • CSS:滚动条从窗口下方几个像素开始

    我想修复我的标题 标题始终位于页面顶部 并且我的整个内容 包括页脚在内的所有内容 都可以滚动 标题高度为 60 px 如下所示 将其固定在顶部不是问题 我想解决的问题 仅使用CSS 是让滚动条从距顶部 60 像素以下的位置开始 正如您所看到
  • 如何检查 JSON 对象数组是否包含数组中定义的值?

    我有以下 JSON 数据 categories catValue 1 catName Arts crafts and collectibles catValue 2 catName Baby catValue 3 catName Beaut
  • 如何检测形状是否被单击(HTML5 画布)?

    我正在使用画布绘制不同的形状 如矩形 三角形 六边形等lineTo方法如这个博客 http blog riacode in 2011 03 03 drawing regular polygons in html5 canvas 我只是想要一
  • 查看 osgi 包的依赖关系?

    我正在 Eclipse 中寻找一个可以以图形方式查看所有 osgi 包的依赖项的工具 请问有人有什么想法吗 STAN 捆绑包和项目依赖关系视图是免费的附加组件 这是一个依赖关系图示例 http stan4j com images stori
  • fitBounds() 显示整个地球(如果地图先隐藏然后显示)

    I have a bunch or markers and I want to show only the area containing them I found a long list of similar questions see