仅显示一个标记反应图 gl 的弹出窗口

Posted

技术标签:

【中文标题】仅显示一个标记反应图 gl 的弹出窗口【英文标题】:Show popup for only one Marker react map gl 【发布时间】:2021-10-17 08:28:19 【问题描述】:

我正在使用react-map-gl 并声明,当单击标记时,popupOpen 设置为 true 并显示弹出窗口。

这适用于只有一个标记的地图,但是当我使用地图功能发送多个标记的坐标时,点击其中任何一个都会打开所有弹出窗口,因为绑定状态会控制它们。

我如何设置它以便只显示与特定标记相关的弹出窗口?

// state
const [popupOpen, setPopupOpen] = useState(false);

// marker & popup

          landmarkData.map((data, index) => (
            <div key=data._id>
              <Marker
                key=index
                longitude=data.longitude
                latitude=data.latitude
                onClick=() => setPopupOpen(true)
              >
                <RoomIcon fontSize="small" style=fill: "red" />
              </Marker>
              popupOpen && (
                <Popup
                  key=index
                  latitude=data.latitude
                  longitude=data.longitude
                  onClose=() => setPopupOpen(false)
                  closeButton=true
                  offsetLeft=10
                >
                  <span style=fontSize: "1vw", fontFamily: "Poppins">
                    data.name
                  </span>
                </Popup>
              )
            </div>
          ))

【问题讨论】:

【参考方案1】:

您应该单独跟踪弹出窗口的打开状态;像这样:


// state
const [popupOpen, setPopupOpen] = useState();

// render


          landmarkData.map((data, index) => (
            <div key=data._id>
              <Marker
                key=index
                longitude=data.longitude
                latitude=data.latitude
                onClick=() => setPopupOpen(...popupOpen, popupOpen[data._id]: true )
              >
                <RoomIcon fontSize="small" style=fill: "red" />
              </Marker>
              popupOpen[data._id] && (
                <Popup
                  key=index
                  latitude=data.latitude
                  longitude=data.longitude
                  onClose=() => setPopupOpen(false)
                  closeButton=true
                  offsetLeft=10
                >
                  <span style=fontSize: "1vw", fontFamily: "Poppins">
                    data.name
                  </span>
                </Popup>
              )
            </div>
          ))

【讨论】:

以上是关于仅显示一个标记反应图 gl 的弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

显示带有 xamarin 表单的弹出窗口

为啥 Chrome 的弹出窗口拦截器会在 target="_blank" 的锚标记上调用?

iframe中的弹出窗口如何显示在最外层?

有没有办法在点击时从地图框弹出窗口中获取信息?

显示窗口服务的弹出窗口

将参数传递给javascript中的弹出窗口[重复]