Setelah
bisa melakukan pencarian dengan geocoding dan menampilkanya menggunakan static
map mari kita lanjut google place, google place adalah layanan developers.google.com/map
untuk menemukan suatu informasi detail tentang suatu lokasi, yang masih bisa
diperinci untuk mencari informasi detail dengan berbagai kategori, mencari
suatu event, mencari suatu image yang terkait dengan suatu lokasi, dan
fasilitas autocomplete pada suatu pencarian.
Akan
tetapi Tidak semua fasilitas web service dari Google bisa digunakan begitu
saja, ada yang harus menggunakan key (Cara mendapatkan api key).API keynya
sendiri bisa didapat di https://code.google.com/apis/console/.
Syaratnya anda harus memiliki account di Google (bisa menggunakan accout Gmail
yang sudah ada).
Contoh
layanan Google yang menggunakan API key adalah Google Places. Fungsinya kurang
lebih sama dengan Geocoding tetapi memberikan hasil yang lebih lengkap.
Dokumentasi selengkapnya ada di https://developers.google.com/places/documentation/.
Request dalam Google Places antara lain Place Searches (mencari tempat), Place
Details (mengembalikan hasil pencarian dengan lebih detail), dan Places Photos
(image yang terkait dengan informasi yang dicari).
Misalkan
sekarang diinginkan untuk mencari suatu obyek di tempat yang ditemukan
sebelumnya (misal mencari bank, restoran,cafe, dan sebagainya) maka kita
manfaatkan Place Searches. Dokumentasinya ada di https://developers.google.com/places/documentation/search.
URL untuk pencarian berbasis teks adalah https://maps.googleapis.com/maps/api/place/textsearch/{output}?{parameters}.
Output adalah salah satu dari json
atau xml.Parameter yang diperlukan
di antaranya adalah query (teks yang
menunjukkan sesuatu yang kita cari),key
(API key untuk aplikasi ini), sensor
(bernilai true/false, mengindikasikan apakah request berasal dari device yang
memiliki sensor lokasi misalnya smartphone atau tablet), location (koordinat latitude dan longitude), dan radius (jarak dalam satuan meter dari
koordinat yang ditentukan, nilai maksimumnya adalah 50000 dan mungkin obyek
diluar radius itu akan disertakan juga dalam hasil pencarian).
Response
yang diberikan selengkapnya bisa dilihat di dokumentasi geocoding pada URL yang
disebutkan di atas. Hasil pencarian paling banyak adalah hanya 60 hasil, dimana
setiap halaman hanya berisi paling banyak 20 hasil. Beberapa informasi yang
bisa kita manfaatkan adalah lat dan lng (untuk menunjukkan koordinat), name (menunjukkan nama obyek), formatted_adresses (alamat lengkap),
dan reference (untuk referensi ke
pencarian detil diPlaceDetails).
Pertama
kali, tambahkan link ke pencarian detil setelah elemen <img> berikut:
... // kode lain
sebelumnya
echo "<img
src='".$url_map."' />";
echo
"<a href='detailplaces.php?lat=$lat&lng=$lng'>Cari sesuatu di
sini</a>";
}
... // kode lain
sesudahnya
Tambah
scrpit yang bercetak tebal di skrip sebelumnya (script geocoding).
File
yang akan dipanggil adalah detailplaces.php dengan membawa argumen koordinat
lokasi.
Berikut
kode untuk detailplaces.php (anda bisa gunakan kerangka script yang pernah
dibuat sebelumnya):
<?php
$keyword =isset($_GET['keyword'])
? urlencode($_GET['keyword']) : '';
$lat =
isset($_GET['lat']) ? $_GET['lat'] : '';
$lng =
isset($_GET['lng']) ? $_GET['lng'] : '';
$pagetoken =
isset($_GET['pagetoken']) ? $_GET['pagetoken'] : '';
if (($lat ==
"" || $lng == "") && $pagetoken == "")
{
die("Tentukan dulu kooordinat lokasi di <a href='places.php'>link berikut
ini</a>");
}
?>
<html>
<head>
<title>Pencarian detail lokasi</title>
</head>
<body>
<h2>Pencarian detail lokasi</h2>
<form name='Tanya' method='GET'>
Apa yang anda cari? (restaurant, bank, sekolah, dsb):
<input id="keyword" name='keyword' type='text'
value='<?php echo $keyword ?>'>
<input type="hidden" name="lat"
value="<?php echo $lat ?>">
<input type="hidden" name="lng"
value="<?php echo $lng ?>">
<input type="submit" name="cari"
value="Search">
</form>
<?php
$url =
"";
$api_key="===
MASUKKAN API KEY GOOGLE DI SINI ===";
if ($pagetoken !=
"") // jika bukan halaman
pertama
{
$url="https://maps.googleapis.com/maps/api/place/textsearch/json?pagetoken=$pagetoken&sensor=false&key=$api_key&";
}
else if
($pagetoken == "" && $keyword != "") // halaman pertama
{
$url="https://maps.googleapis.com/maps/api/place/textsearch/json?query=$keyword&sensor=false&key=$api_key&location=$lat,$lng&radius=100";
}
if ($url !=
"") // jika ada url yg akan
dicari
{ $result_json = json_decode(file_get_contents($url));
echo '<div
id="HasilPencarian">';
if ($result_json->status == 'OK')
{ for ($i=0; $i<sizeof($result_json->results);
$i++)
{ $name =
$result_json->results[$i]->name;
$address =
$result_json->results[$i]->formatted_address;
echo "$name, $address<br/>";
}
echo
"<p><a href='javascript:back()'>Previous page</a>";
if
(isset($result_json->next_page_token))
{ $next_page =
$result_json->next_page_token;
echo
"<p><a href='?pagetoken=$next_page'>Next page</a>";
}
}
else
{ echo $result_json->status;
}
echo '</div>';
}
?>
</body>
</html>
Simpan
dengan nama detailplaces.php
Input untuk script ini ada 3 macam: (1) koordinat
yang didapat dari pencarian tempat sebelumnya, atau (2) keyword yang
menunjukkan obyek yang dicari, atau (3) token ke halaman selanjutnya dari
pencarian yang sama.
Ketika
link yang disediakan di pencarian tempat dipilih, maka data yang dibawa adalah
koordinat lokasi. Dengan input ini script menanyakan jenis obyek yang dicari.
Ketika isian di-submit, maka yang dikirimkan adalah keyword dan koordinat
(sebagai elemen hidden). Kedua data ini digunakan untuk pencarian detil dari
lokasi yang ditentukan. Jika hasil pencarian melebihi 20 item (ada halaman lain
yang belum ditampilkan) maka disediakan link untuk memanggil script yang sama
dengan membawa parameter pagetoken.
Isi pagetoken ini adalah parameter yang telah digunakan untuk pencarian, dalam
bentuk terenkripsi.
Masing-masing hasil
pencarian memiliki koordinat latitude dan longitude yang bisa ditampilkan
detilnya di peta.
Untuk
detail bisa menggunakan static map atau layanan webservice lainnya dari
google.map yang bisa di kembangkan sesuai kebutuhannya.
Catatan
: $api_key="=== MASUKKAN API KEY GOOGLE DI SINI ==="; pada skrip detailplaces harus di isi api key
untuk mendapatkan api key silahkan baca di artikel sebelumnya.
Semoga bermanfaat. . .!
mantab
BalasHapuskonsultan pelusng binis
www.irmavania.com