Rumah >pembangunan bahagian belakang >tutorial php >Di mana awak? Melaksanakan geolokasi dengan php geokoder
Geocoder PHP menawarkan lapisan abstraksi untuk memudahkan tugas geokod. Seni bina perpustakaan adalah modular, yang terdiri daripada httpadapter untuk permintaan pengendalian, penyedia geokod yang pelbagai, dan formatter/pembuangan untuk pengurusan output.
Ciri -ciri Utama:
Pemasangan (melalui komposer):
tambahkan ini ke anda: composer.json
<code class="language-json">{ "require": { "willdurand/geocoder": "@stable" } }</code>Sebagai alternatif, muat turun arkib dari laman web Geocoder PHP.
Alamat geocoding:
Geocoding biasanya melibatkan penukaran alamat (alamat jalan, kejiranan, dan lain -lain) ke dalam koordinat geografi. Ketepatan keputusan bergantung pada kualiti geokoder.Geocoder memerlukan httpadapter untuk berinteraksi dengan perkhidmatan web. Beberapa dimasukkan (curl, soket), dengan sokongan untuk orang lain (Buzz, Guzzle, Zend HTTP, GEOIP2) yang memerlukan integrasi projek yang berasingan.
Geocoders yang disokong banyak, dikategorikan sebagai:
Contoh (Google Maps):
<code class="language-php">$address = 'Laan van Meerdervoort, Den Haag, Nederland'; $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter(); $geocoder = new \Geocoder\Geocoder(); $geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter)); $result = $geocoder->geocode($address);</code>
akan mengandungi latitud, longitud, batas, dan komponen alamat. Geocoder memastikan struktur hasil yang konsisten tanpa mengira pembekal yang dipilih. $result
Sensitiviti Locale:
Geocoder menyokong hasil khusus locale menggunakan. Sebagai contoh, menggunakan lokasi Rusia: LocaleAwareProviderInterface
<code class="language-php">$geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter, 'Ru')); $result = $geocoder->geocode('Laan van Medevoort 7, Den Haag, Nederland');</code>
Chaining Geocoders:
Untuk hasil yang optimum, berantai pelbagai geokoder. Geocoder mengembalikan hasil yang berjaya pertama:
<code class="language-php">$chain = new \Geocoder\Provider\ChainProvider([ new \Geocoder\Provider\OpenStreetMapProvider($adapter), new \Geocoder\Provider\GoogleMapsProvider($adapter), new \Geocoder\Provider\BingMapsProvider($adapter, $bingApiKey), ]); $geocoder->registerProvider($chain);</code>
geocoding terbalik:
Geocoding terbalik menukarkan koordinat (latitud, longitud) ke dalam alamat. Ingat pesanan: latitud, kemudian bujur.
<code class="language-json">{ "require": { "willdurand/geocoder": "@stable" } }</code>
Alamat IP Geocoding:
Alamat IP geokoding (mis., Dari $_SERVER['REMOTE_ADDR']
) adalah mudah:
<code class="language-php">$address = 'Laan van Meerdervoort, Den Haag, Nederland'; $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter(); $geocoder = new \Geocoder\Geocoder(); $geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter)); $result = $geocoder->geocode($address);</code>
Perhatikan bahawa keputusan geokod IP sering kurang terperinci (selalunya hanya negara).
Pengendalian ralat:
Sentiasa gunakan try...catch
blok untuk mengendalikan pengecualian yang berpotensi:
<code class="language-php">$geocoder->registerProvider(new \Geocoder\Provider\GoogleMapsProvider($adapter, 'Ru')); $result = $geocoder->geocode('Laan van Medevoort 7, Den Haag, Nederland');</code>
pemformatan output:
Geocoder menawarkan formatters (berasaskan rentetan) dan pembuangan (output khusus bahasa seperti Geojson, KML, GPX, WKB, WKT).
<code class="language-php">$chain = new \Geocoder\Provider\ChainProvider([ new \Geocoder\Provider\OpenStreetMapProvider($adapter), new \Geocoder\Provider\GoogleMapsProvider($adapter), new \Geocoder\Provider\BingMapsProvider($adapter, $bingApiKey), ]); $geocoder->registerProvider($chain);</code>
Kesimpulan:
Geocoder PHP adalah perpustakaan yang mudah berstruktur, mudah digunakan. Walaupun peningkatan yang kuat, penambahbaikan yang berpotensi boleh termasuk penapisan hasil lanjutan berdasarkan kriteria seperti tahap keyakinan atau margin ralat alamat. Ini akan memanfaatkan potensi penuh geokoder dirantai.
Atas ialah kandungan terperinci Di mana awak? Melaksanakan geolokasi dengan php geokoder. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!