reactjs - Mapbox & React:无法在搜索框中输入值
问题描述
我在一个项目中使用了 React/Mapbox(更具体地说是 DeckGL)的组合。我想包括用于查询地址的地理编码。
我当前的输出:
使用此代码生成:
<DeckGL {...deckGLProps} ref={deckRef}>
<StaticMap
ref={mapRef}
{...staticMapProps}
/>
<div style={{ border: '5px solid black', top: 500, display: 'inline-block', zIndex: '9999'}}>
<Geocoder
mapRef={mapRef}
onViewportChange={handleGeocoderViewportChange}
mapboxApiAccessToken={process.env.REACT_APP_MAPBOX_TOKEN}
position="top-left"
minLength={1}
trackProximity={true}
countries={"us"}
reverseGeocode={true}
enableEventLogging={false}
/>
</div>
</DeckGL>
我的问题:我无法点击搜索栏。搜索栏在其div
. 有没有办法放置组件以使搜索栏可点击?我不认为这是组件的问题,因为此示例Geocoder
中的代码运行良好。
解决方案
在官方react-map-gl-geocoder
回购之后,您可以使用containerRef
prop将地理编码器放置在地图之外(或任何您想要的,注意position: absolute
css prop):
const geocoderContainerRef = useRef();
// render
return (
<div>
<div
ref={this.geocoderContainerRef}
style={{
position: 'absolute',
top: 50,
left: 50
}}
/>
<MapGL
ref={this.mapRef}
{...viewport}
onViewportChange={this.handleViewportChange}
mapboxApiAccessToken={MAPBOX_TOKEN}
>
<Geocoder
mapRef={this.mapRef}
containerRef={this.geocoderContainerRef}
onResult={this.handleOnResult}
onViewportChange={this.handleGeocoderViewportChange}
mapboxApiAccessToken={MAPBOX_TOKEN}
/>
<DeckGL {...viewport} layers={[searchResultLayer]} />
</MapGL>
</div>
);
推荐阅读
- java - 带有 Spring 和 Reactor 的 UnsupportedMediaTypeException
- python - 如何向 KivyMD MDDialog 中的按钮添加操作?
- c++ - 强制将对象创建为 shared_ptr 的断言?
- scala - 默认情况下,Scala Futures 会默默地丢弃异常 - 我可以更改它吗?
- mysql - Grails 组查询适用于 Mysql,但适用于 SQLServer
- c# - 来自 MVVM 中媒体插件的图像未显示
- python - 在不使用 sox 的情况下将 wav 文件转换为 16 位原始签名的原始和小端格式
- amazon-ecs - 如何确定每个日期的 ECS 服务的 Cloudwatch 日志流
- resources - 指示 Colab 是在本地执行代码还是在其他地方的机器上执行代码的标志
- windows - 用户模式访问 Windows 上的 TPM