【问题标题】:Open a popover with by ID - Mapbox按 ID 打开一个弹出框 - Mapbox
【发布时间】:2025-12-22 23:45:11
【问题描述】:

在 mapbox 中,我在地图创建函数中使用以下代码创建叠加层 - http://jsfiddle.net/shanejones/3ajankv9/

我现在需要想办法在一个单独的函数中通过它的 ID 打开一个弹出框。

使用此处的帖子,我已将其修改为以下示例,该示例应打开 id 为 1 的层。

function next(next_id){

    map.featureLayer.eachLayer(function(marker) {

        if (marker.feature.properties.id == marker_id) {
            marker.openPopup();
        }

    });

}

但它所做的只是给我一个未定义的错误,有人知道我在哪里出错了吗?

编辑 - 显示我从控制台运行上述函数时遇到的错误。

谢谢

【问题讨论】:

  • “但它所做的只是给我一个未定义的错误” - 请始终在任何问题中逐字包含错误。知道究竟是什么错误比仅仅提到有一个错误更有用。
  • 添加了我遇到的错误的屏幕截图。
  • 您能否确认fiddle 是否正常工作?
  • 小提琴不工作,因为它需要外部 PHP 脚本小提琴只显示 JS 代码。

标签: maps leaflet mapbox


【解决方案1】:

我过去遇到过这个问题。我最终做的是这样的事情,这不是最好的解决方案,但它可能会帮助你。

 map.featureLayer.eachLayer(function(marker) {
    if (marker.feature.properties.id == marker_id) {
          marker.fireEvent('click', {
                latlng: {
                    lat: marker._latlng.lat,
                    lng: marker._latlng.lng
                }
          });
    }
});

【讨论】: