Mapbox GL 弹出窗口 .setDOMContent 示例

2024-01-10

我正在尝试创建一个自定义按钮,以显示在生成动态链接(URL)的弹出窗口中。由于时间原因,我似乎无法通过 .setHTML 执行此操作,无法在运行时将按钮绑定到函数。所以我想我应该尝试新的 .setDOMContent 关于此功能如何工作的在线信息为零。我想知道是否有人有这样的示例,其中将按钮添加到弹出窗口中,可以运行函数并发送数据。

这是我对此进行的非常糟糕的尝试。

该函数创建弹出窗口

function GameObjectPopup(myObject) {
    var features = map.queryRenderedFeatures(myObject.point, {
        layers: ['seed']
    });

    if (!features.length) {
        return;
    }

    var feature = features[0];
    // Populate the popup and set its coordinates
    // based on the feature found.
    var popup = new mapboxgl.Popup()
        .setLngLat(feature.geometry.coordinates)
        .setHTML(ClickedGameObject(feature))
        .setDOMContent(ClickedGameObject2(feature))
        .addTo(map);
};

该函数通过 .setHTML 添加 html

function ClickedGameObject(feature){
    console.log("clicked on button");
    var html = '';

    html += "<div id='mapboxgl-popup'>";
    html += "<h2>" + feature.properties.title + "</h2>";
    html += "<p>" + feature.properties.description + "</p>";
    html += "<button class='content' id='btn-collectobj' value='Collect'>";
    html += "</div>";
    return html;
}

该函数想要通过.setDOMContent添加DOM内容

function ClickedGameObject2(feature){
    document.getElementById('btn-collectobj').addEventListener('click', function()
    {
        console.log("clicked a button");
        AddGameObjectToInventory(feature.geometry.coordinates);
    });
}

我正在尝试将变量从 features.geometry.coordinates 传输到函数 AddGameObjectToInventory() 中

单击对象时出现的错误(以便生成弹出窗口)

Uncaught TypeError: Cannot read property 'addEventListener' of null

Popup#setHTML https://www.mapbox.com/mapbox-gl-js/api/#Popup#setHTML接受一个表示某些 HTML 内容的字符串:

var str = "<h1>Hello, World!</h1>"
popup.setHTML(str);

while Popup#setDOMContent https://www.mapbox.com/mapbox-gl-js/api/#Popup#setDOMContent获取实际的 HTML 节点。 IE:

var h1 = document.createElement('h1');
h1.innerHTML="Hello, World";
popup.setDOMContent(h1);

这两个代码片段都会产生相同的 Popup HTML 内容。您不想在单个弹出窗口上使用这两种方法,因为它们是执行同一操作的两种不同方法。

您共享的代码中的问题是您尝试使用setDOMContent向您的按钮添加事件侦听器,但您不需要访问Popup弹出 DOM 内容添加到地图后,用于添加事件侦听器的对象。这是我认为您正在尝试做的事情的工作版本:https://jsfiddle.net/h4j554sk/ https://jsfiddle.net/h4j554sk/

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

Mapbox GL 弹出窗口 .setDOMContent 示例 的相关文章

  • 使用node.js访问DOM

    我想访问 html 文件并使用 node js 通过 id 获取元素 这是我的 html 文件
  • Delphi 中的 DOMElement

    我如何在 DOMNodeList 对象中使用 getElementsByTagName 喜欢 procedure TForm1 selecionarClick Sender TObject var DOMDocument iXMLDOMDo
  • Safari 中的 CSS 动画延迟错误

    我最近在 Safari 中遇到了一些与 CSS 动画有关的奇怪行为 并且在操作 DOM 时无法更新元素位置 我拍了一些 GIF 来说明这一点 在 Chrome 中 http recordit co cCim1IwyMc http recor
  • 使用 querySelector 通过 InnerHTML 选择元素

    有没有办法通过innerHTML选择一个元素而不使用循环 可以使用类似的东西来完成吗 document querySelector div innerHTML Sometext or document querySelector div t
  • HTML5 下载属性不适用于 Mozilla [重复]

    这个问题在这里已经有答案了 a class download btn href https example com test pdf target blank Download a 我上面有简单的下载链接html5代码 它在 mozilla
  • 检查一个元素是否包含特定的子元素

    我有很多div有时包含链接 我想检查他们是否有链接 这是我的尝试 var container this closest content find text Check if text contains a tags if container
  • 将事件绑定到尚未创建的 DOM 元素 (jquery)

    如何将事件绑定到脚本加载时不存在的 html 元素 我的脚本的一部分将这些添加到 DOM 中 a class btn remove item href link a 问题是我不能这样做 document ready function btn
  • jquery中元素+ ID vs 只有ID?

    div some id将扫描整个 DOM 中的所有 div some id将直接从 DOM 获取 ID 那么哪个更快呢 div some id or some id See 优化选择器 https learn jquery com perf
  • DOM 属性更改时触发事件

    有没有办法在属性更改时触发事件 可能是自定义的 比方说 当IMG src或DIV的innerHtml发生变化时 注意 自 2012 年起 突变事件已从标准中删除 现已弃用 有关如何使用其替代品 请参阅其他答案或文档 MutationObse
  • ReactJS Mapbox-gl 无效类型:“容器”必须是字符串或 HTMLElement

    我正在使用 ReactJS 和 Mapbox GL JS 构建一个小型应用程序 const MapRender gt const mapContainerRef useRef null const map new mapboxgl Map
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • 查找可以具有绝对定位元素的页面/文档内容的完整高度

    我试图获取页面的高度 可能会在 iframe 中加载 该页面具有绝对定位的元素 这些元素延伸到页面正常底部以下 以下是我尝试过的事情 document body scrollHeight document body offsetHeight
  • 当 querySelectorAll 在不使用库的情况下不可用时,按属性获取元素?

    p 你怎样才能做到相当于 document querySelectorAll data foo where 查询选择器全部 https developer mozilla org en DOM Document querySelectorA
  • Selenium - 保存网站,包括所有图像、css、dom

    我想使用 firefox 或 chrome 访问带有 selenium 的页面 当页面加载时 我想从页面下载所有图像 css dom 我想存储每张图像 就像我在其中找到它们一样 chrome gt Tools gt Development
  • Safari 的 Javascript 与 document.write 的问题

    我的问题只发生在 Safari 上 IE FF Chrome 和 Opera 都可以完美运行 我正在向 DOM 添加一个对象 与 YouTube 的方式完全相同 具体取决于 ActiveX 或 NPAPI 因此在确定写入对象类型后 我通过以
  • Angular2、ZoneJS 和外部更改的 DOM

    我需要一些有关 Angular2 RC1 Web 应用程序中外部更改的 DOM 的帮助 场景很简单 我确实有一个带有相应模板的组件 其中包含一个具有如下 ID 的空 div div div typescripted 组件有一个 ngOnIn
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 如何使用 PHP 从内容中查找 URL?

    需要一个简单的 preg match 它将在内容中查找 c aspx 不带引号 如果找到 它将返回整个 url 举个例子 content div 4 a href m c aspx mt 01 9310ba801f1255e02e411d8
  • Mapbox GL 中的 MaxBounds 和自定义非对称填充

    我有一个 Mapbox GL JS 应用程序 在地图上显示一些小部件 为了确保地图上的任何内容都不会被它们隐藏 我使用以下命令添加了一些填充map setPadding 这是一个不对称的 在我的例子中左边比右边大 它按预期工作 例如fitB
  • 窗口大小调整触发的 DOM 事件

    我有一个布局相当复杂的页面 最初打开页面时 某些元素的对齐存在问题 但是 可以通过更改浏览器窗口的大小来 永久 解决此问题 显然 我不希望用户必须调整浏览器窗口的大小才能使页面正确显示 所以我想知道是否有一种方法可以在页面首次加载时以编程方

随机推荐

  • 如何在 Unity 中将混音器的音量设置为滑块的音量?

    我正在尝试进行一些音频设置 这是我的脚本 public AudioMixer masterMixer public float masterLvl public float musicLvl public float sfxLvl publ
  • C++ 井字棋游戏

    我感到很困惑 我正在尝试使用 Windows C Visual 创建一个 tic tac toe 游戏 到目前为止 我做得很好 直到我不断出错 我尝试寻求帮助 但似乎没有一个答案是正确的 这是我的练习题 实现 displayBoard 以显
  • 如何使用 Squirrel SQL 列出数据库中的所有表?

    我使用 Squirrel SQL 连接到桌面上的 JavaDB Derby 数据库 我可以运行 SQL 查询 但是如何列出数据库中的所有表呢 最好是所有塔和塔类型 有时我注意到执行上述操作可能不会导致表格显示 在我弄清楚这一点之前 我的表节
  • 唯一标识符 (GUID) 上的聚合函数

    假设我有下表 category guid A 5BC2 A 6A1C B 92A2 基本上 我想要执行以下 SQL SELECT category MIN guid FROM myTable GROUP BY category 它不一定必须
  • 如何将正则表达式与 ANY 数组运算符一起使用

    我有一个包含一系列作者的专栏 我怎样才能使用 运算符来检查其任何值是否与给定的正则表达式匹配 The 运算符在左侧获取要检查的字符串 在右侧获取要匹配的正则表达式 文档说ANY操作员必须在右侧 所以 显然 SELECT p ANY auth
  • 对 XElement 进行排序

    我有一个 XElement 其映射如下
  • XDocument 删除节点

    我有一个 XML 文件
  • 为什么 https 请求在我的 React-Native 应用程序中不起作用?

    在我的React Native应用程序中 http请求工作正常 但是当涉及到https请求时 它给出错误 网络请求失败 这里的问题有点奇怪 就好像我从互联网上选择并运行任何示例 api 一样 即使使用 https 它也可以正常工作 我不知道
  • lxml 使用名称空间而不是 ns0、ns1、

    我刚刚开始了解 lxml 基础知识 但我被命名空间困住了 我需要生成这样的 xml
  • Bootstrap下拉父菜单活动类

    这里的菜鸟 寻找答案 但无法发现我做错了什么 我的菜单在 普通 菜单的活动类中工作正常 但我找不到使父菜单成为 活动 菜单的解决方案 下拉菜单引导 1 代码 li class dropdown a class dropdown toggle
  • 更新/重新加载标记而不重新加载谷歌地图

    我使用以下代码来生成标记引脚 它加载完美 但在这张地图的左侧我有过滤器 如何在不重新加载地图的情况下重新加载标记 这引起了一些挫败感 因此我们将不胜感激 非常感谢 Google map results var contentStrings
  • 如何在C#中使用MessagePack?

    我读了msgpack cli 快速入门 https github com msgpack msgpack cli wiki Quick Start文档 我还获得了 C CLI NuGet 包 v0 3 没有任何课程 例如BoxingPack
  • 如何从表面视图创建和保存屏幕截图? [复制]

    这个问题在这里已经有答案了 我有一个应用程序 我希望能够捕获屏幕截图 这是我的代码 public class Screenshot private final View view Create snapshots based on the
  • MVC:将模型指针传递给视图?

    我有一个 iOS 应用程序正在运行 并且正在尝试清理一些代码结构和实现 我想澄清我对 MVC 的理解并改进我的代码 问题 将模型传递给 UIView 以便视图可以根据模型元素的状态呈现它是否合法 我在下面概述了一个示例 但意识到它可能不清楚
  • 如何将 trix-editor 集成到 Angular 2 应用程序中?

    我正在尝试为我的角度应用程序使用 trix 编辑器 但是 我没有获得任何资源 npm 包来在 Angular 2 应用程序中安装 trix 编辑器 您能帮助我提供资源 步骤吗 我也找不到 angular2 的任何内容 只需设置即可 角度 j
  • PowerShell Get-ExecutionPolicy 返回不同的值

    根据我用于获取 PowerShell 执行策略设置的方法 我得到两个不同的值 如果我跑Get ExecutionPolicy在 PowerShell 提示符中 我得到 不受限制 如果我使用以下代码 我会收到 受限 using var run
  • AndroidManifest.xml 中 Uses-Permission 和 Permissions 标签的区别

    有什么区别Uses Permission and Permissions tag in AndroidManifest xml 我明白了uses permission标签 因为它用于访问互联网 我们的应用程序的位置 但我不明白我们何时以及为
  • 如何导入 Google App Engine 文件夹中的 python 脚本文件?

    我对 Python 和 Google App Engine 都很陌生 我想通过创建文件夹结构来组织我的脚本文件 然而 当我这样做时 我无法再弄清楚如何导入它们 例如 main py eggs spam py 如何在 main py 中导入
  • 我在哪里设置我的公司名称?

    创建新的源文件时 xcode 会添加带有您的姓名和公司名称的注释 我在哪里为 xcode 设置我的公司名称 而不是项目 在 Xcode 4 GM 种子中 在导航窗格中 最左侧 侧 选择项目 顶部项目 展开实用程序窗格 在窗口 右上角 最右边
  • Mapbox GL 弹出窗口 .setDOMContent 示例

    我正在尝试创建一个自定义按钮 以显示在生成动态链接 URL 的弹出窗口中 由于时间原因 我似乎无法通过 setHTML 执行此操作 无法在运行时将按钮绑定到函数 所以我想我应该尝试新的 setDOMContent 关于此功能如何工作的在线信