javascript React-标测-GL:如何使悬停的标记出现在顶部?

tpxzln5u  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(119)

我有一个带有不同标记的Map,而且据我所知,标记是按其显示顺序渲染的,这意味着标记3位于标记1和2之上。我使用的是带有mapblibre-gl和React的React Map Gl(typescript)我没问题,但如果我悬停一个标记,我希望悬停的标记在顶部(当与另一个标记重叠时)。我尝试了z轴,但它根本不工作。
制造商:

<Marker latitude={station.lat} longitude={station.lng} key={station.id} >
                        <div className='locDot'>
                            <div className='priceTag'>
                                <span id="brand">{station.brand ? station.brand : 'freie Tankstelle'}</span>
                                <span id="price">{price}</span>
                            </div>
                        </div>
</Marker >

然后将此标记推入数组中,并作为许多标记的组件返回。
CSS:

.locDot{
    /* position: absolute; */
    height: 12px;
    width: 12px;
    display: flex;
    justify-content: center;
    align-items: flex-end;
    background-color: #1E90FF;
    border: 2px solid #fff;
    border-radius: 100%; 
    /* z-index: 1; */
    
  
    
}

.priceTag{
    /* position: relative; */
    display: flex;
    flex-direction: column;
    background-color: #1E90FF;
    padding: 4px 6px;
    font-size: 1rem;
    font-weight: 400;
    color: white;
    margin-bottom: 18px;
    border-radius: 5px;
    /* line-height: 1rem; */
    z-index: 1;

   
    
}
.priceTag:hover{
    position: absolute;
    border: 5px solid red;
    z-index: 5;
}

山德士:codesandbox.io/s/vigorous-mahavira-gxk6wj?file=/src/App.tsx

yzuktlbb

yzuktlbb1#

您需要将zIndex应用到标记本身,您可以通过添加className或内联样式来实现这一点。
我已经用solution更新了codesandbox,基本上我们将Map简单数组并返回标记,基于标记索引,我们将设置活动状态,然后在标记内联样式中检查当前的activeIndex。如果您将鼠标悬停在该div上,将activeIndex设置为它的索引。
但是正如我所说的,这可以简单地通过被动active className然后将其指定为z-index: 1来实现
这是codesandbox

332nm8kg

332nm8kg2#

这将是我在stack上的第一个答案,所以我希望我能满足要求。在尝试了许多方法之后,结果发现使用css的解决方案可能更简单。使用与问题相同的设置:
在您的App.css中

.maplibregl-marker:hover {
  z-index: 1000;
}

相关问题