调整大小之前传单地图无法正确显示

2023-12-19

我在 Binding.scala 上使用带有 scalajs-leaflet 外观的 Leaflet,并且地图初始化/显示不正确。

为了重现这个问题,我准备了一个lihaoyi/workbench页面类似于 scalajs-leaflet 中的页面。

首先,从以下位置下载分叉的 scalajs-leaflethttps://github.com/mcku/scalajs-leaflet https://github.com/mcku/scalajs-leaflet

Run sbt in scalajs-leaflet目录。 进入~ example/fastOptJS无论如何。现在,Web 服务器在端口 12345 启动。

Open http://localhost:12345/example/target/scala-2.12/classes/leaflet2binding-dev.html http://localhost:12345/example/target/scala-2.12/classes/leaflet2binding-dev.html在浏览器中

问题是地图容器出现,但内容(图块等)不正确。在窗口上小幅调整大小后,地图会变得很好,这会触发_onResize传单的处理者。

该容器位于Leaflet2Binding.scala文件并在初始化之前已指定其大小:

val mapElement = <div id="mapid" style="width: 1000px; height: 600px;
                       position: relative; outline: currentcolor none medium;"
                    class="leaflet-container leaflet-touch leaflet-fade-anim 
                    leaflet-grab leaflet-touch-drag leaflet-touch-zoom"
                    data:tabindex="0"></div>.asInstanceOf[HTMLElement]

可以插入一行lmap.invalidateSize(true)在返回元素之前的以下行中https://github.com/mcku/scalajs-leaflet/blob/83b770bc76de450567ababf6c7d2af0700dd58c9/example/src/main/scala/example/Leaflet2Binding.scala#L39 https://github.com/mcku/scalajs-leaflet/blob/83b770bc76de450567ababf6c7d2af0700dd58c9/example/src/main/scala/example/Leaflet2Binding.scala#L39,但在这种情况下没有帮助。即这里:

@dom def renderMap = {
  val mapElement = ... (same element as above)

  .. some other initializations ..

  lmap.invalidateSize(true) // true means, use animation

  println("mapElement._leaflet_id " +mapElement.asInstanceOf[js.Dynamic]._leaflet_id) // prints non-null value, makes me think the container is initialized

  mapElement
}

Any ideas? This is binding.scala specific, but it may be a leaflet issue as well. map before resize after resize

EDIT可能的解决方法 看起来,地图元素有它的clientWidth在此过程中不可用的属性。这是可以理解的,因为该文件尚未“准备好”。然而,CSSstyle.width可用并且可以以 px 为单位定义。在这种情况下,可以修补传单以在计算过程中考虑 css 样式宽度。

如果样式宽度以 px 为单位指定,则该方法有效。

diff --git a/src/map/Map.js b/src/map/Map.js
index b94dd443..6544d7b7 100644
--- a/src/map/Map.js
+++ b/src/map/Map.js
@@ -903,8 +903,9 @@ export var Map = Evented.extend({
        getSize: function () {
                if (!this._size || this._sizeChanged) {
                    this._size = new Point(
-                               this._container.clientWidth || 0,
-                               this._container.clientHeight || 0);
+
+                               this._container.clientWidth || parseInt(this._container.style.width.replace("px",""),10) || 0,^M
+                               this._container.clientHeight || parseInt(this._container.style.height.replace("px",""),10) || 0);;^M

                        this._sizeChanged = false;
                }

Maybe lmap.invalidateSize(true)调用得太早(DOM 尚未准备好或未重绘)。

确保不会发生这种情况。为了防止这种情况,我将这段代码包装如下:

setTimeout(function () {
   mapid.invalidateSize(true);
}, 100);

这必须在每次 DOM 重绘之后完成。

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

调整大小之前传单地图无法正确显示 的相关文章

  • 映射存在类型列表

    我有一个要映射的存在类型对象的列表 像这样的东西 sealed abstract class IntBox val v Int case object IB1 extends IntBox 1 case object IB2 extends
  • Spark - scala - 如何检查配置单元中是否存在表

    我必须使用 Spark 1 6 2 scala 检查配置单元中是否存在表 如果没有 我必须创建一个空数据框并将其保存为配置单元表 如果存在 则覆盖现有表 我需要一个返回布尔值的函数 基于该函数我可以做出上述决定 是否创建新表或覆盖现有表 1
  • “函数是第一等值”这到底是什么意思?

    有人可以用一些很好的例子清楚地解释它吗 在解释函数式编程时 我在 Scala 中遇到了这句话 一流 并不是一个正式定义的概念 但它通常意味着一个实体具有三个属性 有可能used 不受限制 只要 普通 值可以 即从函数传递和返回 放入容器等
  • 如何从spark管道逻辑模型中提取变量权重?

    我目前正在尝试学习 Spark Pipeline Spark 1 6 0 我将数据集 训练和测试 导入为 oas sql DataFrame 对象 执行以下代码后 生成的模型是oas ml tuning CrossValidatorMode
  • 在scala / play框架中构建Json文件

    我正在使用 Play 框架和 Scala 我需要提供一个如下所示的输入 id node37 name 3 7 data children 如何使用 json 获取该格式 以下是 Play 框架网站上的示例 val JsonObject Js
  • Spark:出现心跳错误后丢失数据

    我有一个在 Spark 集群上运行的 Python 程序 有四个工作线程 它处理一个包含大约 1500 万条记录的巨大 Oracle 表 检查结果后发现大约有600万条记录没有插入 我的写入功能如下 df write format jdbc
  • IntelliJ IDEA 13:新的 Scala SBT 项目尚未生成 src 目录结构

    我按照 Jetbrains 网站上的入门视频设置 IntelliJ IDEA 13 1 Community Edition 以与 Scala 配合使用 Scala 插件 v0 36 431 已安装 当我使用向导创建一个新的 Scala SB
  • 如何将 scala 列表转换为 javascript 数组?

    有更简单的方法吗 document ready function var jsArray if scalaList null for id lt scalaList jsArray push id 很简单 如下所示 import play
  • 更改 build.sbt 自定义任务中的版本

    我在 build sbt 中定义了一个自定义任务 val doSmth taskKey Unit smth doSmth version 1 0 SNAPSHOT 但它不会改变版本 我真正想要的是自定义 sbt 发布任务 它将始终将相同的版
  • 模拟 BlazeClientBuilder[IO] 以返回模拟客户端[IO]

    我正在使用BlazeClientBuilder IO resource方法得到Client IO 现在 我想模拟客户端进行单元测试 但不知道该怎么做 有没有一个好的方法来嘲笑这个 我会怎么做 class ExternalCall val r
  • 具有上限的联合类型

    我正在遵循这个问题的公认答案中提出的技术如何定义 类型析取 联合类型 https stackoverflow com questions 3508077 does scala have type disjunction union type
  • 如何使用 Spark 2 屏蔽列?

    我有一些表 我需要屏蔽其中的一些列 要屏蔽的列因表而异 我正在读取这些列application conf file 例如 对于员工表如下所示 id name age address 1 abcd 21 India 2 qazx 42 Ger
  • Play框架:单属性案例类的JSON读取

    我正在尝试为包含单个属性的案例类创建隐式 JSON Reads 但收到错误 Reads Nothing 不符合预期类型 这是代码 import play api libs functional syntax import play api
  • 如何在映射中将字符串转换为 Seq[String]

    我有一个Map String String 以及需要的第三方功能Map String Seq String 有没有一种简单的方法来转换它 以便我可以将地图传递给函数 original mapValues Seq 注意mapValues返回地
  • 在 Scala 中将元素追加到列表末尾

    我无法添加 type 元素T到一个列表中List T 我尝试过myList myElement但它似乎创建了一个奇怪的对象并访问myList last始终返回放入列表中的第一个元素 我怎么解决这个问题 List 1 2 3 4 Result
  • 解决“Show”类型类实例的隐式问题

    我正在努力使Gender实施Show类型类 scala gt trait Gender extends Show Gender defined trait Gender scala gt case object Male extends G
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 将 IndexToString 应用于 Spark 中的特征向量

    Context 我有一个数据框 其中所有分类值都已使用 StringIndexer 进行索引 val categoricalColumns df schema collect case StructField name StringType
  • scala 提供类似 C++ 模板的东西吗?

    我来自 C 并试图了解 scala 的类型系统 考虑以下 C 模板类 template
  • 如何通过 javascript 和 ajax 调用 Scala 中的方法?

    我不知道我的标题是否有点误导 但这是我真正需要帮助的 我正在获取这个网址 get fb login fbEmail function data console log data 这是我的路线 GET fb login email prese

随机推荐

  • 当使用 JavaScript 时,Jade 将 & 转换为 &

    我刚刚开始使用竖琴0 30 1 https www npmjs com package harpJade 附带安装作为预处理器 所以我也从 Jade 开始 我有一个文件夹 其中包含一组文件 文件名如下This is an MD file m
  • AngularJS $http.get 返回未定义且 $http() 不是函数

    我正在构建一个应用程序来动态加载和显示 AngularJS 中数据库中的数据 但是当我尝试访问我的 API 使用 http 或 http get 时 我收到错误 http get 错误 TypeError undefined is not
  • 从 Ruby 调用 Erlang

    我应该使用什么最棒的 gem 从 Ruby 应用程序调用 Erlang 函数 我希望使用 rspec 来测试一些 gen server 的东西 Erlectricity 看起来很可靠 但没有像 Node rpc 这样的东西 只是消息传递 有
  • Robot.mouseMove 未正确移动到指定位置

    每当我运行mouseMove当向机器人发出命令时 鼠标并不总是到达相同的位置 例如 我有以下代码 import java awt Robot import java util concurrent TimeUnit public class
  • MySQL 全文搜索是如何工作的?

    我非常清楚如何使用 MySQL 实现全文搜索 我知道如何添加索引 进行查询并对结果进行排序 但我一直在尝试获取一些有关其工作原理的更深入的信息 以便了解幕后发生的事情 MySQL 如何确定结果相关性 分数到底意味着什么 可以达到从 0 1
  • 如何在 OSGi 中实现 ManagedServiceFactory?

    我目前正在尝试设置我自己的实现ManagedServiceFactory 这就是我想要做的 我需要在每个配置的基础上使用某些服务的多个实例 在 DS 中 组件工作得很好 但现在我发现这些服务应该根据某些外部资源的可用性来处理自己的生命周期
  • 推送大型 github 存储库失败,并显示“无法推送到不合格的目的地:master”

    我有一个大型 git 存储库 从 SVN 存储库创建 我想将其推送到 github 鉴于它很大 我不能尝试直接推送它 因为它会因 打包太大 错误而失败 到目前为止一切都很好 我可以一次推送一个提交 但当我尝试这样做时 发生的事情是 git
  • 内容脚本中的 IFrame。如何与main.js通信?

    我的 Firefox 插件从内容脚本 page mod 打开 Fancybox 类型 iframe 在 Fancybox 中我显示了我自己的 HTML 页面 my fancybox stuff html 位于我自己的服务器中 现在 从my
  • 获取指向成员 std::string::size 的指针无法与 libc++ 链接,但可以与 libstdc++ 一起使用

    我正在做一个需要使用 libc 的项目 我遇到了以下问题 当我尝试编译以下代码时 include
  • 用于将复制集本地备份到 Windows Server 的 MongoDB 脚本

    我想通过 Windows 2012 服务器运行的复制集对 MongoDB 进行每日备份 最终目标是获取每日备份并将备份写入远程或本地共享 Windows 我可以批处理 mongodump 命令吗 任何帮助将不胜感激 抱歉 有点晚了 但以下内
  • 使用 hdiutil 或其他工具向 DMG 添加背景图像/颜色? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用命令行工具为 Mac OS X 创建美观的 DMG https stackoverflow com questions 96882 how do i create a nice looking
  • 指定的任务可执行位置......csc.exe无效错误

    我有一个关于 TFS 的项目 它可以在除了我的机器之外的其他人的机器上运行 构建时 我收到图像中可以看到的错误 指定的任务可执行位置 csc exe 无效 目前正在尝试修复 VS 2017 根据该消息 似乎csc exe已经损坏 只需尝试以
  • 允许唤醒计时器 Windows 7/Vista

    我需要允许唤醒计时器 计算机从睡眠 休眠状态唤醒 以将所有电源计划设置为已启用 我尝试了 Win32 PowerSetting 但它只适用于英文版的 Windows 我需要使用 NET 2 0 感谢您的回复 我怀疑您可以使用对 powrpr
  • Rust 参考在仍然借用的情况下被丢弃在这里

    问题 我从一个方法中收到 XXXXXXX 在仍借用时被丢弃 错误 其中 XXXXXXX 在方法结束时有效 这很好 但 Rust 不必要地期望它与输入引用一样长因为它们有明确的生命周期 这是一些设置信息 我有一个结构 其中迭代文本内容中所有找
  • 无法使用 Directus v8 API 获取临时令牌

    我正在使用最新的 Directus v8 版本 我安装了它并用它来设计我的架构 一切似乎都正常 但是当我尝试获取临时令牌来验证用户身份时 我收到一个关于未授权的奇怪错误 同时 AUTH 端点没有不需要先前授权的用户 显然 我的 Direct
  • WhitePages API 的替代方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 WhitePages API developer whitepages com 来获取电话类
  • PHP 中的 AWS Cloudfront SetCookie

    我正在尝试设置 cookie 以查看来自 AWS Cloudfront 的私有内容 http docs aws amazon com AmazonCloudFront latest DeveloperGuide private conten
  • 应用程序启动期间的键盘修改器

    我想捕获在应用程序启动期间是否按下了修改键 以确定全屏或窗口化 在主窗口构造函数中 我尝试检查键盘 修饰符 http msdn microsoft com en us library system windows input keyboar
  • JavaScript 的日期范围限制

    有两个文本类型的输入字段 用于以 mm dd yyy 格式写入开始日期和结束日期 我需要一个 JavaScript 函数来检查输入日期之间的日期范围间隔是否不超过 14 天 并且最大日期应该是当前日期 有没有插件或快速解决方案 我尝试使用
  • 调整大小之前传单地图无法正确显示

    我在 Binding scala 上使用带有 scalajs leaflet 外观的 Leaflet 并且地图初始化 显示不正确 为了重现这个问题 我准备了一个lihaoyi workbench页面类似于 scalajs leaflet 中