第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 3.x 中的 Component 中添加 onClick on MapContainer

在 3.x 中的 Component 中添加 onClick on MapContainer

我正在使用以下版本:"leaflet":?"^1.7.1", "react-leaflet":?"^3.0.2",我想在點(diǎn)擊地圖時(shí)執(zhí)行一些操作,例如添加標(biāo)記。我嘗試了似乎有效的無(wú)狀態(tài)組件方法,但由于多種原因我不太喜歡它。我嘗試使用eventHandlers屬性:? render() {? ? return <div>? ? ? ? ? <MapContainer center={[ 48, 11 ]} zoom={10} scrollWheelZoom={true} eventHandlers={{? ? ? ? ? ? click: () => {? ? ? ? ? ? ? console.log('map clicked')? ? ? ? ? ? },? ? ? ? ? }}>? ? ? ? ? ? <TileLayer .../>? ? ? ? ? </MapContainer>? ? ? ? </div>? }但它永遠(yuǎn)不會(huì)開火。任何有關(guān)在 onClick 事件處理程序中構(gòu)建的提示都將受到贊賞。
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

似乎eventHandlers,雖然它可以作為道具使用MapContainer(如果你在 vscode fi 上按 ctlr + 空格,它會(huì)彈出)但它在官方API中不可用并且僅適用于的子組件MapContainer。

您想要實(shí)現(xiàn)的目標(biāo)可以useMapEvents在單獨(dú)的 comp 上使用來(lái)實(shí)現(xiàn),然后作為子項(xiàng)包含在MapContainer

function App() {

? function MyComponent() {

? ? const map = useMapEvents({

? ? ? click: (e) => {

? ? ? ? const { lat, lng } = e.latlng;

? ? ? ? L.marker([lat, lng], { icon }).addTo(map);

? ? ? }

? ? });

? ? return null;

? }


? return (

? ? <MapContainer center={[50.5, 30.5]} zoom={13} style={{ height: "100vh" }}>

? ? ? <TileLayer

? ? ? ? attribution='&copy; <a >OpenStreetMap</a> contributors'

? ? ? ? url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"

? ? ? />

? ? ? <MyComponent />

? ? </MapContainer>

? );

}

演示

另一種方法是在 listen whenReadyprop(沒(méi)有正式記錄,但似乎與whenCreatedprop 類似,但地圖實(shí)例可通過(guò)訪問(wèn)object.target)MapContainer:


<MapContainer

? ? ? center={[50.5, 30.5]}

? ? ? zoom={13}

? ? ? style={{ height: "100vh" }}

? ? ? whenReady={(map) => {

? ? ? ? console.log(map);

? ? ? ? map.target.on("click", function (e) {

? ? ? ? ? const { lat, lng } = e.latlng;

? ? ? ? ? L.marker([lat, lng], { icon }).addTo(map.target);

? ? ? ? });

? ? ? }}

? ? >

? ? ...

</MapContainer>

第三種方法是作為(MapConsumer?)的孩子使用:MapContainer


<MapContainer center={[50.5, 30.5]} zoom={13}>

? ? ?<MapConsumer>

? ? ? ? ? ? {(map) => {

? ? ? ? ? ? ? console.log("map center:", map.getCenter());

? ? ? ? ? ? ? map.on("click", function (e) {

? ? ? ? ? ? ? ? const { lat, lng } = e.latlng;

? ? ? ? ? ? ? ? L.marker([lat, lng], { icon }).addTo(map);

? ? ? ? ? ? ? });

? ? ? ? ? ? ? return null;

? ? ? ? ? ? }}

? ? ?</MapConsumer>

</MapContainer>

第四種方法是使用whenCreatedprop(官方記錄)MapContainer:


<MapContainer

? ? ? center={[50.5, 30.5]}

? ? ? zoom={13}

? ? ? style={{ height: "100vh" }}

? ? ? whenCreated={(map) => {

? ? ? ? map.on("click", function (e) {

? ? ? ? ? const { lat, lng } = e.latlng;

? ? ? ? ? L.marker([lat, lng], { icon }).addTo(map.target);

? ? ? ? });

? ? ? }}

? ? >

...




查看完整回答
反對(duì) 回復(fù) 2023-06-15
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)