
بسم الله الرحمن الرحيم
Cara Membuat Marker dan Menandai Lokasi di Google Maps JavaScript API
Marker atau penanda lokasi merupakan salah satu fitur yang paling sering digunakan ketika membuat aplikasi berbasis peta.
Contohnya untuk menampilkan:
- lokasi kantor,
- alamat pelanggan,
- lokasi toko,
- posisi properti,
- titik pengiriman,
- lokasi pengguna,
- atau koordinat yang tersimpan di database.
Pada tutorial ini kita akan membuat marker di Google Maps menggunakan JavaScript berdasarkan nilai latitude dan longitude.
Alur sederhananya:
Latitude + Longitude
↓
Google Maps JavaScript API
↓
Membuat Map
↓
Membuat Marker
↓
Menampilkan Titik Lokasi
Artikel ini merupakan pembaruan dari tutorial lama di blog ini. Implementasi Google Maps JavaScript API terus berkembang, sehingga contoh lama diperbarui agar konsep dan strukturnya lebih mudah diterapkan pada project modern.
Apa Itu Marker di Google Maps?
Marker adalah penanda visual yang ditempatkan pada koordinat tertentu di dalam peta.
Misalnya kita mempunyai koordinat:
Latitude : -6.9175
Longitude : 107.6191
Koordinat tersebut dapat digunakan untuk menentukan posisi pada Google Maps.
Secara konsep:
latitude + longitude
↓
position
↓
marker
↓
tampil di map
Jadi untuk membuat sebuah marker, minimal kita membutuhkan latitude, longitude, dan objek peta tempat marker tersebut ditampilkan.
Latitude dan Longitude
Sebelum membuat marker, kita perlu memahami dua nilai utama yang digunakan untuk menentukan posisi.
Latitude
Latitude atau garis lintang menentukan posisi utara dan selatan.
Contoh:
const latitude = -6.9175;
Longitude
Longitude atau garis bujur menentukan posisi timur dan barat.
Contoh:
const longitude = 107.6191;
Kemudian keduanya dapat digabungkan menjadi objek koordinat:
const position = {
lat: -6.9175,
lng: 107.6191
};
Objek position inilah yang nantinya digunakan untuk menentukan pusat peta dan posisi marker.
Persiapan Google Maps JavaScript API
Untuk menggunakan Google Maps JavaScript API pada aplikasi web, kita membutuhkan API key dari Google Maps Platform.
Secara umum prosesnya adalah:
- Membuat atau memilih project di Google Cloud.
- Mengaktifkan Maps JavaScript API.
- Membuat API key.
- Membatasi penggunaan API key sesuai website yang menggunakannya.
- Memuat Google Maps JavaScript API pada halaman aplikasi.
Jangan menaruh API key yang tidak dibatasi pada repository publik.
Untuk aplikasi website, sebaiknya batasi key menggunakan HTTP referrer restrictions dan hanya izinkan domain yang memang membutuhkan Google Maps.
Menyiapkan Container Google Maps
Pertama buat elemen HTML yang akan digunakan sebagai tempat menampilkan peta.
<div id="map"></div>
Kemudian berikan tinggi pada container tersebut:
<style>
#map {
width: 100%;
height: 450px;
}
</style>
Tanpa tinggi yang jelas, container peta dapat terlihat kosong meskipun JavaScript sudah berjalan.
Membuat Google Maps
Sekarang kita buat fungsi untuk menginisialisasi peta.
async function initMap() {
const position = {
lat: -6.9175,
lng: 107.6191
};
const { Map } = await google.maps.importLibrary("maps");
const map = new Map(document.getElementById("map"), {
center: position,
zoom: 15,
mapId: "DEMO_MAP_ID"
});
}
Pada contoh tersebut:
center: position
menentukan titik tengah peta.
Sedangkan:
zoom: 15
menentukan tingkat pembesaran peta.
Semakin besar nilai zoom, semakin dekat tampilan peta terhadap lokasi.
Membuat Marker Google Maps
Setelah map tersedia, kita dapat menambahkan marker.
Pada implementasi Google Maps JavaScript API modern, kita dapat menggunakan AdvancedMarkerElement.
Contohnya:
async function initMap() {
const position = {
lat: -6.9175,
lng: 107.6191
};
const { Map } = await google.maps.importLibrary("maps");
const { AdvancedMarkerElement } =
await google.maps.importLibrary("marker");
const map = new Map(document.getElementById("map"), {
center: position,
zoom: 15,
mapId: "DEMO_MAP_ID"
});
const marker = new AdvancedMarkerElement({
map: map,
position: position,
title: "Lokasi Saya"
});
}
Bagian terpentingnya adalah:
position: position
yang menentukan koordinat marker.
Sedangkan:
map: map
menentukan bahwa marker tersebut akan ditampilkan pada objek Google Maps yang baru saja kita buat.
Contoh Lengkap Google Maps dengan Marker
Berikut contoh sederhana dalam satu halaman HTML:
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Google Maps Marker</title>
<style>
#map {
width: 100%;
height: 450px;
}
</style>
</head>
<body>
<h1>Lokasi pada Google Maps</h1>
<div id="map"></div>
<script>
async function initMap() {
const position = {
lat: -6.9175,
lng: 107.6191
};
const { Map } =
await google.maps.importLibrary("maps");
const { AdvancedMarkerElement } =
await google.maps.importLibrary("marker");
const map = new Map(
document.getElementById("map"),
{
center: position,
zoom: 15,
mapId: "DEMO_MAP_ID"
}
);
new AdvancedMarkerElement({
map: map,
position: position,
title: "Lokasi Saya"
});
}
</script>
<script
async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&callback=initMap">
</script>
</body>
</html>
Ganti:
YOUR_API_KEY
dengan API key Google Maps milik project yang digunakan.
Mengambil Latitude dan Longitude dari Database
Pada aplikasi sebenarnya, koordinat biasanya tidak ditulis langsung di JavaScript.
Data dapat berasal dari database.
Misalnya tabel users mempunyai:
id
name
latitude
longitude
Contoh datanya:
1 | User A | -6.9175 | 107.6191
Data tersebut kemudian diambil dari backend dan dikirim ke halaman.
Contoh sederhana menggunakan PHP:
<?php
$latitude = (float) $user['latitude'];
$longitude = (float) $user['longitude'];
?>
Kemudian nilainya dapat digunakan pada JavaScript:
const position = {
lat: <?= json_encode($latitude) ?>,
lng: <?= json_encode($longitude) ?>
};
Dengan demikian marker akan mengikuti koordinat yang tersimpan di database.
Jangan Masukkan Data Database Langsung Tanpa Validasi
Pada implementasi nyata, nilai latitude dan longitude harus divalidasi terlebih dahulu.
Latitude berada pada rentang:
-90 sampai 90
sedangkan longitude:
-180 sampai 180
Contoh sederhana:
$latitude = filter_var(
$user['latitude'],
FILTER_VALIDATE_FLOAT
);
$longitude = filter_var(
$user['longitude'],
FILTER_VALIDATE_FLOAT
);
Selain validasi format, aplikasi juga perlu memastikan koordinat memang berasal dari record yang boleh dilihat oleh pengguna tersebut.
Tipe Data Latitude dan Longitude di Database
Pada artikel lama saya menggunakan tipe FLOAT.
Untuk aplikasi yang membutuhkan penyimpanan koordinat secara lebih konsisten, kita dapat mempertimbangkan tipe DECIMAL.
Contohnya:
latitude DECIMAL(10, 7)
longitude DECIMAL(10, 7)
Contoh data:
-6.9175000
107.6191000
Pada Laravel migration, misalnya:
$table->decimal('latitude', 10, 7);
$table->decimal('longitude', 10, 7);
Pemilihan tipe data tetap perlu disesuaikan dengan kebutuhan dan database yang digunakan.
Menampilkan Banyak Marker
Kita juga dapat menampilkan lebih dari satu lokasi.
Misalnya kita mempunyai:
const locations = [
{
name: "Lokasi A",
lat: -6.9175,
lng: 107.6191
},
{
name: "Lokasi B",
lat: -6.9147,
lng: 107.6098
},
{
name: "Lokasi C",
lat: -6.9218,
lng: 107.6041
}
];
Kemudian lakukan looping:
locations.forEach((location) => {
new AdvancedMarkerElement({
map: map,
position: {
lat: location.lat,
lng: location.lng
},
title: location.name
});
});
Sekarang setiap koordinat mempunyai marker masing-masing.
Konsep ini dapat digunakan untuk aplikasi seperti:
Lokasi cabang
Lokasi pelanggan
Lokasi teknisi
Lokasi properti
Lokasi pengiriman
Lokasi perangkat
Menampilkan Nama Lokasi pada Marker
Properti:
title: "Lokasi Saya"
dapat digunakan untuk memberikan informasi dasar pada marker.
Untuk informasi yang lebih lengkap, Google Maps juga menyediakan mekanisme untuk membuat konten interaktif seperti info window.
Contohnya, marker dapat dikembangkan agar menampilkan:
Nama lokasi
Alamat
Nomor telepon
Status
Informasi lainnya
ketika pengguna berinteraksi dengan titik tersebut.
Bagaimana Jika Koordinat Berasal dari IP Address?
Pada versi lama artikel ini saya menggunakan informasi IP address sebagai salah satu cara memperoleh perkiraan lokasi.
Hal tersebut perlu dipahami dengan benar.
Lokasi berdasarkan IP bukan lokasi GPS yang presisi.
IP geolocation biasanya hanya memberikan perkiraan wilayah berdasarkan jaringan yang digunakan.
Karena itu, jika aplikasi membutuhkan posisi perangkat yang lebih akurat, pertimbangkan menggunakan Geolocation API browser dengan izin pengguna.
Contoh:
navigator.geolocation.getCurrentPosition(
(position) => {
console.log(position.coords.latitude);
console.log(position.coords.longitude);
},
(error) => {
console.error(error);
}
);
Browser akan meminta izin pengguna sebelum memberikan lokasi.
Marker Tidak Muncul? Cek Beberapa Hal Ini
Jika peta tampil tetapi marker tidak terlihat, periksa:
1. Latitude dan longitude
Pastikan nilainya berupa angka:
console.log(position);
2. Maps JavaScript API
Pastikan API yang diperlukan sudah aktif pada Google Cloud project.
3. API key
Periksa apakah API key valid dan restriction-nya sesuai domain yang digunakan.
4. Container peta
Pastikan elemen:
<div id="map"></div>
mempunyai tinggi.
Contohnya:
#map {
height: 450px;
}
5. Browser console
Buka Developer Tools dan periksa Console untuk melihat error dari Google Maps JavaScript API atau JavaScript aplikasi.
Marker Lama dan Advanced Marker
Jika menemukan tutorial Google Maps lama, kita sering melihat kode seperti:
new google.maps.Marker({
position: position,
map: map
});
Kode tersebut banyak digunakan pada implementasi Google Maps sebelumnya.
Pada dokumentasi Google Maps JavaScript API yang lebih baru, Google menyediakan Advanced Markers untuk implementasi marker modern.
Karena itu, ketika membuat project baru sebaiknya periksa dokumentasi Google Maps terbaru dan gunakan API yang direkomendasikan untuk versi yang digunakan project.
Kesimpulan
Untuk menandai sebuah lokasi di Google Maps, konsep dasarnya sebenarnya sederhana:
Koordinat
(latitude + longitude)
↓
Google Maps
↓
Marker
↓
Lokasi tampil pada peta
Pada aplikasi nyata, koordinat tersebut dapat berasal dari database, API, input pengguna, GPS browser, atau sumber data lainnya.
Yang penting adalah memahami bahwa marker membutuhkan posisi koordinat yang valid dan objek Google Maps tempat marker ditampilkan.
Dengan konsep dasar tersebut kita dapat mengembangkan fitur yang lebih kompleks seperti:
- banyak marker,
- info window,
- lokasi pelanggan,
- pencarian lokasi,
- tracking perangkat,
- lokasi cabang,
- integrasi database,
- hingga aplikasi geolocation.
Semoga tutorial ini membantu memahami cara membuat marker dan menentukan titik lokasi menggunakan Google Maps JavaScript API.
Artikel ini merupakan pembaruan dari tutorial lama mengenai Google Maps API. Contoh diperbarui karena implementasi Google Maps JavaScript API telah berkembang sejak artikel pertama diterbitkan.

