What's new

Question --RE: REACT-LEAFLET (mag generate ng MAP IMAGE)

neko021403

Eternal Poster
Established
Joined
Nov 3, 2022
Posts
507
Reaction
1,127
Points
376
Good day po

matatanong lang po sana ako regarding po sa REACT-LEAFLET..
YUNG map po kasi na galing sa MapContainer po gusto ko po
gawin IMAGE sya tapos ipi-print ko po sa pdf ..

alam ko na po yung sa PRINTING SA PDF , pero yung GAGAWING
IMAGE PO SI MapContainer HINDI KO PO ALAM gawin..

baka po my ideya po kayo .. salamat po
 
Magandang araw!

Kung nais mong i-convert ang MapContainer sa React-Leaflet sa isang imahe na maaari mong i-print sa PDF, maaari mong gamitin ang isang library tulad ng html2canvas para gawing imahe ang MapContainer.

Una, siguraduhin na na-install mo na ang html2canvas library sa iyong proyekto. Maaari mong gawin ito sa pamamagitan ng pagpatakbo ng sumusunod na command sa terminal:

Code:
npm install html2canvas

Pagkatapos nito, mai-import mo ang html2canvas library sa iyong component:

JSX:
import html2canvas from 'html2canvas';

Kapag nakumpleto na ito, maaari mong gamitin ang html2canvas upang i-convert ang MapContainer sa isang canvas element. Narito ang isang halimbawa ng kung paano ito maaaring gawin:

JSX:
import React, { useRef } from 'react';
import { MapContainer, TileLayer } from 'react-leaflet';

const MyMap = () => {
  const mapRef = useRef(null);

  const handlePrint = () => {
    const mapElement = mapRef.current;

    if (mapElement) {
      html2canvas(mapElement).then((canvas) => {
        const imgData = canvas.toDataURL('image/png');
        const pdf = new jsPDF();
        pdf.addImage(imgData, 'PNG', 10, 10);
        pdf.save('map.pdf');
      });
    }
  };

  return (
    <div>
      <button onClick={handlePrint}>Print Map</button>
      <MapContainer ref={mapRef} center={[51.505, -0.09]} zoom={13} style={{ height: '400px', width: '400px' }}>
        <TileLayer
          url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
          attribution="&copy; OpenStreetMap contributors"
        />
      </MapContainer>
    </div>
  );
};

export default MyMap;

Sa halimbawang ito, gumagamit tayo ng useRef hook para ma-access ang MapContainer element. Sa loob ng handlePrint function, ginagamit natin ang html2canvas para kunan ng screenshot ang MapContainer at i-convert ito sa isang canvas element. Pagkatapos nito, ginagamit natin ang toDataURL method upang kunin ang imahe ng canvas at binubuo ito ng isang PDF gamit ang jsPDF library.

Tandaan na kailangan mo ring i-import ang jsPDF library sa iyong proyekto para mabuo ang PDF. Maaari mong i-install ito sa pamamagitan ng pagpatakbo ng command na ito sa terminal:

Code:
npm install jspdf

Pagkatapos nito, maaari mo nang gamitin ang jsPDF sa iyong proyekto.

Inaasahan kong makatulong ito sa iyo. Kung mayroon kang iba pang mga katanungan, huwag mag-atubiling magtanong!
 
Back
Top