Anda sudah siap!

Untuk mulai mengembangkan, masuklah ke dokumentasi developer kami.

Aktifkan Google Maps Android API

Untuk membantu Anda memulai, kami akan memandu Anda melalui Google Developers Console untuk melakukan beberapa hal terlebih dahulu:

  1. Buat atau pilih sebuah proyek
  2. Aktifkan Google Maps Android API
  3. Buat kunci yang sesuai
Lanjutkan

Google Maps Android Heatmap Utility

Peta panas berguna untuk menyatakan distribusi dan densitas titik data pada peta.

Pengantar

Google Maps Android API Utility Library menyertakan utilitas peta panas, yang bisa Anda gunakan untuk menambahkan satu atau beberapa peta panas ke peta Google dalam aplikasi Anda.

Video ini membahas penggunaan peta panas sebagai alternatif marker bila data Anda memerlukan banyak titik data pada peta.

Peta panas memudahkan pemirsa memahami distribusi dan intensitas relatif titik data pada peta. Daripada menempatkan marker di setiap lokasi, peta panas menggunakan warna untuk menyatakan distribusi data.

Dalam contoh di bawah ini, merah menyatakan area kantor polisi dengan konsentrasi tinggi di Victoria, Australia.

Peta dengan peta panas yang menampilkan lokasi kantor polisi
Peta panas di peta

Jika Anda belum menyiapkan Google Maps Android API Utility Library, ikuti panduan persiapan sebelum membaca bagian selebihnya dari laman ini.

Menambahkan peta panas sederhana

Untuk menambahkan peta panas ke peta, Anda membutuhkan kumpulan data yang terdiri dari koordinat setiap lokasi yang diinginkan. Pertama, buat HeatmapTileProvider, kemudian teruskan ke kumpulan objek LatLng. Kemudian buat TileOverlay baru, dengan meneruskan penyedia petak peta panas padanya, dan tambahkan overlay petak ke peta.

Utilitas ini menyediakan kelas HeatmapTileProvider, yang mengimplementasikan antarmuka TileProvider untuk menyediakan gambar petak bagi peta panas. HeatmapTileProvider menerima sekumpulan objek LatLng (atau objek WeightedLatLng, seperti dijelaskan di bawah ini). Ini akan membuat gambar petak untuk berbagai tingkat zoom, berdasarkan opsi radius, gradien dan opasitas yang disediakan. Anda bisa mengubah nilai default untuk opsi-opsi ini.

Dengan melihat langkah-langkah ini secara lebih detail:

  1. Gunakan HeatmapTileProvider.Builder(), dengan meneruskannya ke kumpulan objek LatLng, untuk menambahkan HeatmapTileProvider baru.
  2. Buat objek TileOverlayOptions baru dengan opsi yang relevan, termasuk HeatmapTileProvider.
  3. Panggil GoogleMap.addTileOverlay() untuk menambahkan overlay pada peta.
private void addHeatMap() {
    List<LatLng> list = null;

    // Get the data: latitude/longitude positions of police stations.
    try {
        list = readItems(R.raw.police_stations);
    } catch (JSONException e) {
        Toast.makeText(this, "Problem reading list of locations.", Toast.LENGTH_LONG).show();
    }

    // Create a heat map tile provider, passing it the latlngs of the police stations.
    mProvider = new HeatmapTileProvider.Builder()
        .data(list)
        .build();
    // Add a tile overlay to the map, using the heat map tile provider.
    mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
}

private ArrayList<LatLng> readItems(int resource) throws JSONException {
    ArrayList<LatLng> list = new ArrayList<LatLng>();
    InputStream inputStream = getResources().openRawResource(resource);
    String json = new Scanner(inputStream).useDelimiter("\\A").next();
    JSONArray array = new JSONArray(json);
    for (int i = 0; i < array.length(); i++) {
        JSONObject object = array.getJSONObject(i);
        double lat = object.getDouble("lat");
        double lng = object.getDouble("lng");
        list.add(new LatLng(lat, lng));
    }
    return list;
}

Untuk contoh ini, data disimpan dalam file JSON, police_stations.json. Inilah ekstrak dari file tersebut:

[
{"lat" : -37.1886, "lng" : 145.708 } ,
{"lat" : -37.8361, "lng" : 144.845 } ,
{"lat" : -38.4034, "lng" : 144.192 } ,
{"lat" : -38.7597, "lng" : 143.67 } ,
{"lat" : -36.9672, "lng" : 141.083 }
]

Menggunakan titik garis lintang/garis bujur yang telah diberi bobot

Saat membuat HeatmapTileProvider, Anda bisa meneruskan padanya sekumpulan koordinat garis lintang/garis bujur yang telah diberi bobot. Ini berguna jika Anda ingin mengilustrasikan pentingnya rangkaian lokasi tertentu.

Untuk menerapkan pemberian bobot ke lokasi tertentu:

  1. Buat WeightedLatLng baru untuk masing-masing lokasi yang memerlukan pemberian bobot. Teruskan LatLng dan double yang menyatakan intensitas yang diperlukan. Intensitas ini menunjukkan tingkat kepentingan relatif, atau nilai, dari lokasi ini. Nilai yang lebih tinggi akan menghasilkan warna dengan intensitas lebih tinggi dalam gradien peta panas. Secara default, warna dengan intensitas tertinggi adalah merah.
  2. Panggil HeatmapTileProvider.Builder().weightedData(), sebagai ganti HeatmapTileProvider.Builder().data(), untuk membuat peta panas.

Menyesuaikan peta panas

Sejumlah properti peta panas bisa disesuaikan. Anda bisa mengatur opsi pada saat pembuatan, melalui fungsi Builder. Atau, ubah opsi kapan saja dengan memanggil pengatur yang relevan pada HeatmapTileProvider, kemudian kosongkan cache petak overlay sehingga menggambar ulang semua petak dengan opsi baru.

Tersedia opsi-opsi berikut:

  1. Radius: Ukuran Gaussian blur yang diterapkan pada peta panas, dinyatakan dalam piksel. Default-nya adalah 20. Harus antara 10 dan 50. Gunakan radius() Builder untuk mengatur nilai saat membuat peta panas, atau ubah nilainya nanti dengan setRadius().
  2. Gradient: Serangkaian warna yang digunakan peta panas untuk menghasilkan peta warna, berkisar dari intensitas terendah hingga tertinggi. Gradien dibuat menggunakan dua larik: larik integer yang berisi warna, dan larik float yang menunjukkan titik awal untuk setiap warna, diberikan sebagai persentase intensitas maksimum, dan dinyatakan berupa pecahan dari 0 hingga 1. Anda perlu menentukan hanya satu warna untuk gradien warna tunggal, atau minimal dua warna untuk gradien beberapa warna. Peta warna dibuat menggunakan interpolasi antar warna tersebut. Gradien default memiliki dua warna. Gunakan gradient() Builder untuk mengatur nilai saat membuat peta panas, atau ubah nilainya nanti dengan setGradient().
  3. Opacity: Ini adalah opasitas dari seluruh layer peta panas, dan memiliki rentang dari 0 hingga 1. Default-nya adalah 0,7. Gunakan opacity() Builder untuk menyetel nilai saat membuat peta panas, atau ubah nilai nanti dengan setOpacity().

Misalnya, buat sebuah Gradient untuk mengatur gradien sebelum menambahkan peta panas:

// Create the gradient.
int[] colors = {
    Color.rgb(102, 225, 0), // green
    Color.rgb(255, 0, 0)    // red
};

float[] startPoints = {
    0.2f, 1f
};

Gradient gradient = new Gradient(colors, startPoints);

// Create the tile provider.
mProvider = new HeatmapTileProvider.Builder()
     .data(mList)
     .gradient(gradient)
     .build();

// Add the tile overlay to the map.
mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));

Untuk mengubah opasitas peta panas yang sudah ada:

  mProvider.setOpacity(0.7);
  mOverlay.clearTileCache();

Mengubah kumpulan data

Untuk mengubah kumpulan data tempat peta panas dibuat, gunakan HeatmapTileProvider.setData(), atau HeatmapTileProvider.setWeightedData() untuk titik WeightedLatLng. Catatan: Jika Anda ingin menambahkan titik ke peta panas, atau membuang titik dari peta panas, perbarui kumpulan data Anda kemudian gunakan setData() atau setWeightedData().

  ArrayList<WeightedLatLng> data = new ArrayList<WeightedLatLng>();
  mProvider.setData(data);
  mOverlay.clearTileCache();

Membuang peta panas

Anggaplah Anda telah menambahkan peta panas ini:
mProvider = new HeatmapTileProvider.Builder.data(data).build();
mOverlay = mMap.addTileOverlay(new
    TileOverlayOptions().tileProvider(mProvider));

Untuk membuang peta panas, Anda perlu membuang overlay petak:

mOverlay.remove();

Melihat aplikasi demo

Untuk contoh implementasi peta panas lain, lihat HeatmapsDemoActivity dalam aplikasi demo yang disertakan bersama pustaka utilitas. Panduan persiapan ini menampilkan cara menjalankan aplikasi demo.

Kirim masukan tentang...

Google Maps Android API
Google Maps Android API
Butuh bantuan? Kunjungi halaman dukungan kami.