Автоматическое открывание всплывающих маркеров на карте реакционных листовок
Я использую некоторые маркеры на карте реактивных листовок, чтобы показать различный текст.
Но я не могу найти флаг для всплывающей подсказки autoOpen.
Я получаю (position, children, onOpen, onClose) в качестве доступных атрибутов.
render() {
return (
<div className={'ShapeLayer'}>
{
this.shapes.map(shape => {
return (
<Marker key={shape['id']} position={shape['coordinates']} draggable={false} opacity={1}>
<Popup>
<span>{shape['text']}</span>
</Popup>
</Marker>
);
})
}
</div>
)
}
Это делается с помощью этого кода на родной листовке
var marker = L.marker(shapess[i]['coordinates'], {
opacity: 0.01
}).bindTooltip(shapess[i]['text'],
{
permanent: true,
className: "shapesText" + i,
offset: [0, 0],
direction: "center"
}
).openTooltip().addTo(mymap);
Как я могу сделать то же самое на Reaction_leflet
2 ответа
Решение
Вы можете использовать всплывающую подсказку вместо всплывающего окна, если оно только для текста, а затем использовать permanent
атрибут в подсказке.
<Marker key={shape['id']} position={shape['coordinates']} draggable={false} opacity={1}>
<Tooltip permanent>
<span>{shape['text']}</span>
</Tooltip>
</Marker>
Вот источник дополнительных примеров:
Обновление: 2023 г. Используйте setTimeout для доступа к openPopup() в маркере.
import { MapContainer, TileLayer, Marker, Popup } from 'react-leaflet';
import L from 'leaflet';
import 'leaflet/dist/leaflet.css';
import { useRef } from 'react';
const Location = () => {
const position = [6.632264, 124.597816];
const laptopMarker = L.icon({
iconUrl: './icons/laptop.gif',
iconSize: [40, 40],
popupAnchor: [0, -20],
})
const marker = useRef(null);
return (
<MapContainer whenReady={() => {
setTimeout(() => {
marker.current.openPopup();
}, 3000);
}} center={position} zoom={9} scrollWheelZoom={false} >
<TileLayer
attribution='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<Marker ref={marker} position={position} icon={laptopMarker}>
<Popup maxWidth={250}>
Hi! <img src='./icons/wave.gif' width='15' height='15' className='inline-block mb-1 mr-1' /> are you interested where I live?
You can find me here!
</Popup>
</Marker>
</MapContainer >
)
}
export default Location;