Integrasi Gmaps pada Aplikasi Reactjs

Integrasi Gmaps pada Aplikasi Reactjs
ibnu gunawan prayogo

Ibnu Gunawan P

Sat, 26 2021, 1:37:00 am

Daftar Isi

Google Maps adalah layanan peta yang disediakan oleh Google yang mendukung berbagai macam konfigurasi. Menambahkan Google Maps ke aplikasi dapat memberikan informasi yang lebih lengkap kepada pengguna aplikasi informasi berbentuk alamat jalan atau kumpulan koordinat dari lokasi yang dicari.

Dalam artikel ini, saya akan membahas langkah-langkah untuk mengintegrasikan Google Maps API ke dalam aplikasi ReactJS. Dengan integrasi ini, kita dapat dengan mudah menampilkan peta yang dinamis di situs web atau aplikasi yang kita kembangkan menggunakan ReactJS.

# Persiapan

Laptop yang sudah terinstall nodejs dan ReactJs. Untuk mendownload dan menginstall nodejs dapat dilihat dalam website-nya di nodejs.org https://nodejs.org/ dan Untuk ReactJs dapat dilihat pada website-nya di ReactJS https://reactjs.org/docs/getting-started.html , Jangan lupa juga Secangkir Kopi ☕ 😁.

# Coding Time

Setelah nodejs dan ReactJS telah terinstall, langkah pertama adalah membuat project baru dengan perintah di bawah.

npx create-react-app react-gmaps

Selanjutnya , masuk ke directory project yang telah dibuat:

cd react-gmaps

Sebelum menjalankan atau menuliskan kode program , kita install terlebih dahulu dependensi Google mapsnya:

npm i @react-google-maps/api atau yarn add @react-google-maps/api

Pada saat ini, Kita telah memiliki aplikasi React dengan package react-google-maps. Sekarang Kita dapat menggunakan gmaps di aplikasi reactjs. Selanjutnya, Kita perlu mengedit file App.js mengganti kode untuk menggunakan package Google Map yang telah diinstall.

buka src/App.js dan ikuti code di bawah:

// Import Package google-maps yang telah diinstall
import {
  GoogleMap,
  LoadScript
} from "@react-google-maps/api";

function App() {

  // Atur LongLat Focus map disini saya mengatur LongLat yang mengarah ke Jakarta
  const center = {
    lat: -6.2269976,
    lng: 106.7848748,
  };

  // ContainerStyle Berfungsi Untuk Mengatur StyleContainer Untuk google maps
  const containerStyle = {
    width: '800px',
    height: '800px'
  };

  return (
    <>
      <LoadScript googleMapsApiKey={GOOGLE_APIKEY_KAMU}>
        <GoogleMap
          mapContainerStyle={containerStyle}
          center={center}
          zoom={12}
        />
      </LoadScript>
    </>
  );
}

export default App;

Jalankan program untuk melihat hasil dari gmaps dengan perintah:

npm start atau yarn start

Contoh, akses dengan url localhost:3000 :

/assets/articles/2021-06-01-103253800x804scrot-framed.png

  • Menggunakan Marker

Import terlebih Marker terlebih dahulu untuk menggunakan marker pada gmaps api, dan untuk contoh penggunaan marker bisa di lihat pada codingan dibawah:

// Import Package google-maps yang telah diinstall
import {
  GoogleMap,
  LoadScript,
  Marker, // Import Marker
} from "@react-google-maps/api";

function App() {

  // Atur LongLat Focus map disini saya mengatur LongLat yang mengarah ke Jakarta
  const center = {
    lat: -6.2269976,
    lng: 106.7848748,
  };

  // ContainerStyle Berfungsi Untuk Mengatur StyleContainer Untuk google maps
  const containerStyle = {
    width: '800px',
    height: '800px'
  };

  return (
    <>
      <LoadScript googleMapsApiKey={process.env.REACT_APP_GMAPS_API}>
        <GoogleMap
          mapContainerStyle={containerStyle}
          center={center}
          zoom={12}
        >
          <Marker
            //Titik Marker akan di letakkan dengan menentukan LongLat
            position={{
              lat: -6.214511929764319,
              lng:  106.84522285129088,
            }}
            // Jika Ingin Marker dapat di drag rubah value draggable menjadi true
            draggable={false}
          />
        </GoogleMap>
      </LoadScript>
    </>
  );
}

export default App;
  • Kostumasi Google Maps

Untuk Mengkostumasi style google maps kunjungi website https://mapstyle.withgoogle.com/ , ubah tampilan maps sesuai selera, setelah selesai mengubah tampilan maps sesuai selera selanjutnya copy script style yang berbentuk json.

/assets/articles/2021-06-01-105759748x691scrot-framed.png

Selanjutnya kita dapat menggunakan style json tadi pada param options di tag dengan key styles , contoh codingan :

// Import Package google-maps yang telah diinstall
import {
  GoogleMap,
  LoadScript,
  Marker,
  InfoWindow,
} from "@react-google-maps/api";

function App() {

  // Atur LongLat Focus map disini saya mengatur LongLat yang mengarah ke Jakarta
  const center = {
    lat: -6.2269976,
    lng: 106.7848748,
  };

  // ContainerStyle Berfungsi Untuk Mengatur StyleContainer Untuk google maps
  const containerStyle = {
    width: '800px',
    height: '800px'
  };
 // Style Json yang di dapatkan pada https://mapstyle.withgoogle.com/
  const costumeMaps = [
    {
      "elementType": "geometry",
      "stylers": [
        {
          "color": "#242f3e"
        }
      ]
    },
    {
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#746855"
        }
      ]
    },
    {
      "elementType": "labels.text.stroke",
      "stylers": [
        {
          "color": "#242f3e"
        }
      ]
    },
    {
      "featureType": "administrative.land_parcel",
      "elementType": "labels",
      "stylers": [
        {
          "visibility": "off"
        }
      ]
    },
    {
      "featureType": "administrative.locality",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#d59563"
        }
      ]
    },
    {
      "featureType": "poi",
      "elementType": "labels.text",
      "stylers": [
        {
          "visibility": "off"
        }
      ]
    },
    {
      "featureType": "poi",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#d59563"
        }
      ]
    },
    {
      "featureType": "poi.business",
      "stylers": [
        {
          "visibility": "off"
        }
      ]
    },
    {
      "featureType": "poi.park",
      "elementType": "geometry",
      "stylers": [
        {
          "color": "#263c3f"
        }
      ]
    },
    {
      "featureType": "poi.park",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#6b9a76"
        }
      ]
    },
    {
      "featureType": "road",
      "elementType": "geometry",
      "stylers": [
        {
          "color": "#38414e"
        }
      ]
    },
    {
      "featureType": "road",
      "elementType": "geometry.stroke",
      "stylers": [
        {
          "color": "#212a37"
        }
      ]
    },
    {
      "featureType": "road",
      "elementType": "labels.icon",
      "stylers": [
        {
          "visibility": "off"
        }
      ]
    },
    {
      "featureType": "road",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#9ca5b3"
        }
      ]
    },
    {
      "featureType": "road.highway",
      "elementType": "geometry",
      "stylers": [
        {
          "color": "#746855"
        }
      ]
    },
    {
      "featureType": "road.highway",
      "elementType": "geometry.stroke",
      "stylers": [
        {
          "color": "#1f2835"
        }
      ]
    },
    {
      "featureType": "road.highway",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#f3d19c"
        }
      ]
    },
    {
      "featureType": "road.local",
      "elementType": "labels",
      "stylers": [
        {
          "visibility": "off"
        }
      ]
    },
    {
      "featureType": "transit",
      "stylers": [
        {
          "visibility": "off"
        }
      ]
    },
    {
      "featureType": "transit",
      "elementType": "geometry",
      "stylers": [
        {
          "color": "#2f3948"
        }
      ]
    },
    {
      "featureType": "transit.station",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#d59563"
        }
      ]
    },
    {
      "featureType": "water",
      "elementType": "geometry",
      "stylers": [
        {
          "color": "#17263c"
        }
      ]
    },
    {
      "featureType": "water",
      "elementType": "labels.text.fill",
      "stylers": [
        {
          "color": "#515c6d"
        }
      ]
    },
    {
      "featureType": "water",
      "elementType": "labels.text.stroke",
      "stylers": [
        {
          "color": "#17263c"
        }
      ]
    }
  ]

  return (
    <>
      <LoadScript googleMapsApiKey={process.env.REACT_APP_GMAPS_API}>
        <GoogleMap
          mapContainerStyle={containerStyle}
          center={center}
          zoom={12}
          options={{
            styles: costumeMaps
          }}
        >
          <Marker
            //Titik Marker akan di letakkan dengan menentukan LongLat
            position={{
              lat: -6.214511929764319,
              lng:  106.84522285129088,
            }}
            // Jika Ingin Marker dapat di drag rubah value draggable menjadi true
            draggable={false}
          />
        </GoogleMap>
      </LoadScript>
    </>
  );
}

export default App;

Hasil kosutmasi :

/assets/articles/2021-06-01-110343804x803scrot-framed.png

# Pesan Penulis

Bagaimana cukup mudah kan? Untuk Dokumentasi Lengkapnya dapat di lihat Disini. Cukup itu yang dapat saya berikan, semoga bermanfaat. Terimakasih 😁