如何从反应传单中的坐标数组呈现多个标记
How to render multiple markers from an array of coordinates in react leaflet
正如标题所说,我正在尝试使用 React 传单在地图上呈现多个标记。
我正在收集从 BE 响应中收到的所有坐标,并将它们放入一个数组中。当我渲染组件时,我只看到没有标记的地图。所以我可能遗漏了一些东西。
这是我的代码:
var arrCoordinates = [[/* coordinates 1 */], [/* coordinates2 */]...[/* coordinates n */]]
function MultipleMarkers(){
const map = useMapEvent({
click(){
map.locate()
}
})
return arrCoordinate.map(coordinata => {
<Marker position={coordinata}
icon={new Icon({iconUrl: marker, iconSize: [25, 41], iconAnchor: [12, 41]})}>
<Popup>{Object.keys(elem).length > 0 ? elem.bodyfindSegnalazione[0][0].indirizzo + ' ' + elem.bodyfindSegnalazione[0][0].civico + ' ' + elem.bodyfindSegnalazione[0][0].quartiere : ''}</Popup>
</Marker>
})
}
return (
<div id="mapid" style={{display: showMap}}>
<MapContainer
center={center} zoom={12}
scrollWheelZoom={true}
style={{ height: "100%", width: "100%" }}
>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<MultipleMarkers />
</MapContainer>
</div>
);
如果有任何建议,我将不胜感激,在此先致谢。和平
您缺少的是 <Marker
之前的 return 语句。
应该是
function MultipleMarkers() {
const map = useMapEvent({
click() {
map.locate();
}
});
return arrCoordinates.map((coordinata) => {
return (
<Marker position={coordinata}
icon={new Icon({iconUrl: marker, iconSize: [25, 41], iconAnchor: [12, 41]})}>
<Popup>{Object.keys(elem).length > 0 ? elem.bodyfindSegnalazione[0][0].indirizzo + ' ' + elem.bodyfindSegnalazione[0][0].civico + ' ' + elem.bodyfindSegnalazione[0][0].quartiere : ''}</Popup>
</Marker>
);
});
}
正如标题所说,我正在尝试使用 React 传单在地图上呈现多个标记。 我正在收集从 BE 响应中收到的所有坐标,并将它们放入一个数组中。当我渲染组件时,我只看到没有标记的地图。所以我可能遗漏了一些东西。
这是我的代码:
var arrCoordinates = [[/* coordinates 1 */], [/* coordinates2 */]...[/* coordinates n */]]
function MultipleMarkers(){
const map = useMapEvent({
click(){
map.locate()
}
})
return arrCoordinate.map(coordinata => {
<Marker position={coordinata}
icon={new Icon({iconUrl: marker, iconSize: [25, 41], iconAnchor: [12, 41]})}>
<Popup>{Object.keys(elem).length > 0 ? elem.bodyfindSegnalazione[0][0].indirizzo + ' ' + elem.bodyfindSegnalazione[0][0].civico + ' ' + elem.bodyfindSegnalazione[0][0].quartiere : ''}</Popup>
</Marker>
})
}
return (
<div id="mapid" style={{display: showMap}}>
<MapContainer
center={center} zoom={12}
scrollWheelZoom={true}
style={{ height: "100%", width: "100%" }}
>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
/>
<MultipleMarkers />
</MapContainer>
</div>
);
如果有任何建议,我将不胜感激,在此先致谢。和平
您缺少的是 <Marker
之前的 return 语句。
应该是
function MultipleMarkers() {
const map = useMapEvent({
click() {
map.locate();
}
});
return arrCoordinates.map((coordinata) => {
return (
<Marker position={coordinata}
icon={new Icon({iconUrl: marker, iconSize: [25, 41], iconAnchor: [12, 41]})}>
<Popup>{Object.keys(elem).length > 0 ? elem.bodyfindSegnalazione[0][0].indirizzo + ' ' + elem.bodyfindSegnalazione[0][0].civico + ' ' + elem.bodyfindSegnalazione[0][0].quartiere : ''}</Popup>
</Marker>
);
});
}