cahyadsn / wilayah

Kode dan Data Wilayah Administrasi & Pulau Indonesia sesuai Kepmendagri No 100.1.1-6117 Tahun 2022 dengan PHP+MySQL+AJaX. Demo link : https://wilayah.cahyadsn.com/v2.6/
MIT License
760 stars 307 forks source link

Relasi ke Google Maps #41

Closed abudawud closed 9 months ago

abudawud commented 9 months ago

Terimakasih sudah membuat repo yang sangat bermanfaat ini.

Adakah cara untuk merelasikan data yang ada di database ini ke Google Maps. Contoh kasus:

  1. Seorang pegawai absen pada suatu tempat menggunakan aplikasi mobile yang saya kembangkan.
  2. GPS digunakan untuk mendeteksi koordinat pegawai tersebut
  3. Koordinat kemudian ditranslasikan ke alamat dan wilayah dengan bantuan Google Geocoding

Berikut contoh response dari geocoding api pada koordinat (lat,lng) -1.197511,116.9855922

{
    "plus_code": {
        "compound_code": "RX2P+X6W Lamaru, Balikpapan City, East Kalimantan, Indonesia",
        "global_code": "6PCRRX2P+X6W"
    },
    "results": [
        {
            "address_components": [
                {
                    "long_name": "RX3P+26H",
                    "short_name": "RX3P+26H",
                    "types": [
                        "plus_code"
                    ]
                },
                {
                    "long_name": "Jalan Mulawarman",
                    "short_name": "Jl. Mulawarman",
                    "types": [
                        "route"
                    ]
                },
                {
                    "long_name": "Lamaru",
                    "short_name": "Lamaru",
                    "types": [
                        "administrative_area_level_4",
                        "political"
                    ]
                },
                {
                    "long_name": "Kecamatan Balikpapan Timur",
                    "short_name": "Kec. Balikpapan Tim.",
                    "types": [
                        "administrative_area_level_3",
                        "political"
                    ]
                },
                {
                    "long_name": "Kota Balikpapan",
                    "short_name": "Kota Balikpapan",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "Kalimantan Timur",
                    "short_name": "Kalimantan Timur",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                },
                {
                    "long_name": "76117",
                    "short_name": "76117",
                    "types": [
                        "postal_code"
                    ]
                }
            ],
            "formatted_address": "RX3P+26H, Jl. Mulawarman, Lamaru, Kec. Balikpapan Tim., Kota Balikpapan, Kalimantan Timur 76117, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.1973274,
                        "lng": 116.9856937
                    },
                    "southwest": {
                        "lat": -1.1974784,
                        "lng": 116.9855646
                    }
                },
                "location": {
                    "lat": -1.1973801,
                    "lng": 116.9856331
                },
                "location_type": "ROOFTOP",
                "viewport": {
                    "northeast": {
                        "lat": -1.196053919708498,
                        "lng": 116.9869781302915
                    },
                    "southwest": {
                        "lat": -1.198751880291502,
                        "lng": 116.9842801697085
                    }
                }
            },
            "place_id": "ChIJFTv3myBQ8S0RzfHG4uAlfSg",
            "types": [
                "premise"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "RX3P+26H",
                    "short_name": "RX3P+26H",
                    "types": [
                        "plus_code"
                    ]
                },
                {
                    "long_name": "Jalan Mulawarman",
                    "short_name": "Jl. Mulawarman",
                    "types": [
                        "route"
                    ]
                },
                {
                    "long_name": "Lamaru",
                    "short_name": "Lamaru",
                    "types": [
                        "administrative_area_level_4",
                        "political"
                    ]
                },
                {
                    "long_name": "Kecamatan Balikpapan Timur",
                    "short_name": "Kec. Balikpapan Tim.",
                    "types": [
                        "administrative_area_level_3",
                        "political"
                    ]
                },
                {
                    "long_name": "Kota Balikpapan",
                    "short_name": "Kota Balikpapan",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "Kalimantan Timur",
                    "short_name": "Kalimantan Timur",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                },
                {
                    "long_name": "76117",
                    "short_name": "76117",
                    "types": [
                        "postal_code"
                    ]
                }
            ],
            "formatted_address": "RX3P+26H, Jl. Mulawarman, Lamaru, Kec. Balikpapan Tim., Kota Balikpapan, Kalimantan Timur 76117, Indonesia",
            "geometry": {
                "location": {
                    "lat": -1.1974338,
                    "lng": 116.9856177
                },
                "location_type": "GEOMETRIC_CENTER",
                "viewport": {
                    "northeast": {
                        "lat": -1.196084819708498,
                        "lng": 116.9869666802915
                    },
                    "southwest": {
                        "lat": -1.198782780291502,
                        "lng": 116.9842687197085
                    }
                }
            },
            "place_id": "ChIJoxWGmyBQ8S0RKmDGQ70Mdgg",
            "types": [
                "establishment",
                "food",
                "point_of_interest",
                "restaurant"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "Jalan Bubuhan",
                    "short_name": "Jl. Bubuhan",
                    "types": [
                        "route"
                    ]
                },
                {
                    "long_name": "Lamaru",
                    "short_name": "Lamaru",
                    "types": [
                        "administrative_area_level_4",
                        "political"
                    ]
                },
                {
                    "long_name": "Kecamatan Balikpapan Timur",
                    "short_name": "Kec. Balikpapan Tim.",
                    "types": [
                        "administrative_area_level_3",
                        "political"
                    ]
                },
                {
                    "long_name": "Kota Balikpapan",
                    "short_name": "Kota Balikpapan",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "Kalimantan Timur",
                    "short_name": "Kalimantan Timur",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                },
                {
                    "long_name": "76117",
                    "short_name": "76117",
                    "types": [
                        "postal_code"
                    ]
                }
            ],
            "formatted_address": "Jl. Bubuhan, Lamaru, Kec. Balikpapan Tim., Kota Balikpapan, Kalimantan Timur 76117, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.1971742,
                        "lng": 116.9856277
                    },
                    "southwest": {
                        "lat": -1.1975655,
                        "lng": 116.9853315
                    }
                },
                "location": {
                    "lat": -1.1973698,
                    "lng": 116.9854796
                },
                "location_type": "GEOMETRIC_CENTER",
                "viewport": {
                    "northeast": {
                        "lat": -1.196020869708498,
                        "lng": 116.9868285802915
                    },
                    "southwest": {
                        "lat": -1.198718830291502,
                        "lng": 116.9841306197085
                    }
                }
            },
            "place_id": "ChIJHfmBniBQ8S0R-rBpVzAh41Y",
            "types": [
                "route"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "RX2P+X6",
                    "short_name": "RX2P+X6",
                    "types": [
                        "plus_code"
                    ]
                },
                {
                    "long_name": "Lamaru",
                    "short_name": "Lamaru",
                    "types": [
                        "administrative_area_level_4",
                        "political"
                    ]
                },
                {
                    "long_name": "Balikpapan Timur",
                    "short_name": "Balikpapan Timur",
                    "types": [
                        "administrative_area_level_3",
                        "political"
                    ]
                },
                {
                    "long_name": "Balikpapan City",
                    "short_name": "Balikpapan City",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "East Kalimantan",
                    "short_name": "East Kalimantan",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "RX2P+X6 Lamaru, Balikpapan City, East Kalimantan, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.1975,
                        "lng": 116.985625
                    },
                    "southwest": {
                        "lat": -1.197625,
                        "lng": 116.9855
                    }
                },
                "location": {
                    "lat": -1.197511,
                    "lng": 116.9855922
                },
                "location_type": "GEOMETRIC_CENTER",
                "viewport": {
                    "northeast": {
                        "lat": -1.196213519708498,
                        "lng": 116.9869114802915
                    },
                    "southwest": {
                        "lat": -1.198911480291502,
                        "lng": 116.9842135197085
                    }
                }
            },
            "place_id": "GhIJpppZSwEp878RVYxO8RM_XUA",
            "plus_code": {
                "compound_code": "RX2P+X6 Lamaru, Balikpapan City, East Kalimantan, Indonesia",
                "global_code": "6PCRRX2P+X6"
            },
            "types": [
                "plus_code"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "Lamaru",
                    "short_name": "Lamaru",
                    "types": [
                        "administrative_area_level_4",
                        "political"
                    ]
                },
                {
                    "long_name": "Balikpapan Timur",
                    "short_name": "Balikpapan Timur",
                    "types": [
                        "administrative_area_level_3",
                        "political"
                    ]
                },
                {
                    "long_name": "Balikpapan City",
                    "short_name": "Balikpapan City",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "East Kalimantan",
                    "short_name": "East Kalimantan",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "Lamaru, Balikpapan Timur, Balikpapan City, East Kalimantan, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.119882,
                        "lng": 117.0063719
                    },
                    "southwest": {
                        "lat": -1.2109238,
                        "lng": 116.914792
                    }
                },
                "location": {
                    "lat": -1.1706813,
                    "lng": 116.9440313
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                    "northeast": {
                        "lat": -1.119882,
                        "lng": 117.0063719
                    },
                    "southwest": {
                        "lat": -1.2109238,
                        "lng": 116.914792
                    }
                }
            },
            "place_id": "ChIJH-WqvmpO8S0RSmr4l2VtOwY",
            "types": [
                "administrative_area_level_4",
                "political"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "76117",
                    "short_name": "76117",
                    "types": [
                        "postal_code"
                    ]
                },
                {
                    "long_name": "Balikpapan City",
                    "short_name": "Balikpapan City",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "East Kalimantan",
                    "short_name": "East Kalimantan",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "Balikpapan City, East Kalimantan 76117, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.120275,
                        "lng": 116.993583
                    },
                    "southwest": {
                        "lat": -1.230262,
                        "lng": 116.8986283
                    }
                },
                "location": {
                    "lat": -1.1751609,
                    "lng": 116.9263671
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                    "northeast": {
                        "lat": -1.120275,
                        "lng": 116.993583
                    },
                    "southwest": {
                        "lat": -1.230262,
                        "lng": 116.8986283
                    }
                }
            },
            "place_id": "ChIJ589ssWpO8S0RYLsWYOvFABw",
            "types": [
                "postal_code"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "Balikpapan Timur",
                    "short_name": "Balikpapan Timur",
                    "types": [
                        "administrative_area_level_3",
                        "political"
                    ]
                },
                {
                    "long_name": "Balikpapan City",
                    "short_name": "Balikpapan City",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "East Kalimantan",
                    "short_name": "East Kalimantan",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "Balikpapan Timur, Balikpapan City, East Kalimantan, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.1056181,
                        "lng": 117.0224519
                    },
                    "southwest": {
                        "lat": -1.2540031,
                        "lng": 116.9067499
                    }
                },
                "location": {
                    "lat": -1.2289832,
                    "lng": 116.9596695
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                    "northeast": {
                        "lat": -1.1056181,
                        "lng": 117.0224519
                    },
                    "southwest": {
                        "lat": -1.2540031,
                        "lng": 116.9067499
                    }
                }
            },
            "place_id": "ChIJ2zaPmDdO8S0RsOX3yvsLAwQ",
            "types": [
                "administrative_area_level_3",
                "political"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "Balikpapan City",
                    "short_name": "Balikpapan City",
                    "types": [
                        "administrative_area_level_2",
                        "political"
                    ]
                },
                {
                    "long_name": "East Kalimantan",
                    "short_name": "East Kalimantan",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "Balikpapan City, East Kalimantan, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": -1.039488,
                        "lng": 117.0224519
                    },
                    "southwest": {
                        "lat": -1.282297,
                        "lng": 116.727761
                    }
                },
                "location": {
                    "lat": -1.1487418,
                    "lng": 116.8715474
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                    "northeast": {
                        "lat": -1.039488,
                        "lng": 117.0224519
                    },
                    "southwest": {
                        "lat": -1.282297,
                        "lng": 116.727761
                    }
                }
            },
            "place_id": "ChIJ6UaYXkRJ8S0RAvB7QoqiudE",
            "types": [
                "administrative_area_level_2",
                "political"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "East Kalimantan",
                    "short_name": "East Kalimantan",
                    "types": [
                        "administrative_area_level_1",
                        "political"
                    ]
                },
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "East Kalimantan, Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": 2.6065559,
                        "lng": 119.025528
                    },
                    "southwest": {
                        "lat": -2.409401,
                        "lng": 113.8366543
                    }
                },
                "location": {
                    "lat": 0.5386586,
                    "lng": 116.419389
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                    "northeast": {
                        "lat": 2.6065559,
                        "lng": 119.025528
                    },
                    "southwest": {
                        "lat": -2.409401,
                        "lng": 113.8366543
                    }
                }
            },
            "place_id": "ChIJkZxNlhBH8S0R13bjLx2wq8Q",
            "types": [
                "administrative_area_level_1",
                "political"
            ]
        },
        {
            "address_components": [
                {
                    "long_name": "Indonesia",
                    "short_name": "ID",
                    "types": [
                        "country",
                        "political"
                    ]
                }
            ],
            "formatted_address": "Indonesia",
            "geometry": {
                "bounds": {
                    "northeast": {
                        "lat": 6.216999899999999,
                        "lng": 141.0425
                    },
                    "southwest": {
                        "lat": -11.1082999,
                        "lng": 94.7351
                    }
                },
                "location": {
                    "lat": -0.7892749999999999,
                    "lng": 113.921327
                },
                "location_type": "APPROXIMATE",
                "viewport": {
                    "northeast": {
                        "lat": 6.216999899999999,
                        "lng": 141.0425
                    },
                    "southwest": {
                        "lat": -11.1082999,
                        "lng": 94.7351
                    }
                }
            },
            "place_id": "ChIJtwRkSdcHTCwRhfStG-dNe-M",
            "types": [
                "country",
                "political"
            ]
        }
    ],
    "status": "OK"
}

Adakah cara untuk merelasikan response wilayah seperti Provinsi Kalimantan Timur, Kota Balikpapan, Kecamatan Balkkpapan TImur. menjadi kode wilayah sesuai dengan yang ada di database ini ?

Alternatif saat ini saya menggunakan string match yang tetnunya banyak mismatch. Terimakasih, jika butuh informasi lebih detail bisa disampaikan.

cahyadsn commented 9 months ago
  1. Penamaan di Google Map dari hasil geocoding adalah mengikuti penamaan di Database Google sendiri, yang memang tidak berelasi langsung/memakai penamaan sesuai data Kemendagri yang dipakai pada repo ini
  2. Penggunaan string match dalam kasus (1) tersebut menjamin hasil yang sesuai, karena banyak penamaan yang tidak seragam/sesuai
  3. Relasi yang memungkinkan adalah dengan menggunakan titik koordinat (latitude/longitude) yang didapat dari google map namun tentunya perlu penambahan data boundaries/area untuk masing-masing wilayah pada database aplikasi yg di kembangkan
  4. data koordinat yg didapat dari google map, di mapping ke data boundaries/area utk mendapatkan nama wilayahnya (relasi : lat/long in a area)
abudawud commented 9 months ago

Response data bondaries dari google map api tidak bisa digunakan sebagai referensi untuk menentukan wilayah. Hal ini karena google map hanya meresponse bounding box (geometry.bounds). Satu-satunya cara adalah membuat melakukan build ulang database ini dengan menyertakan field geometry (batas wilayah).