<?php // classes/demo_Geocode.php 
/** 
 * Class Geocode Demonstration Script 
 */ 
error_reporting(E_ALL); 
 
// Load the Class 
require_once('class_Geocode.php'); 
 
// Make sure that php works with UTF-8 
mb_internal_encoding('utf-8'); 
mb_regex_encoding('utf-8'); 
mb_http_output('utf-8'); 
 
 
// Test Objects 
Class TO 
{ 
    public $name, $geo; 
    public function __construct($name, $geo) { 
        $this->name = $name; 
        $this->geo  = $geo; 
    } 
} 
 
 
// A collection of curated examples, giving Geocode information in widely varying formats 
$testdata=[]; 
 
// GOOD examples 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40.4401766,-79.9526167' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40.4401766°N,79.9526167°W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40°26.4106\'N,79°57.157\'W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40°26\'24.636"N,79°57\'9.42"W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40°26'24.636"N,79°57'9.42"W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40°26′24.636″N,79°57′9.42″W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40°26’24.636”N,79°57‘9.42“W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '40°26’24.636“N,79°57’9.42“W' ); 
$testdata[] = new TO( 'Post Office 15213 in Pittsburgh', '87G2C2RW+3X' ); 
 
$testdata[] = new TO( 'Seatac Airport (Google data)', '47° 26.59′ -122° 18.42′' ); 
$testdata[] = new TO( 'Seatac Airport (Google data)', '47.443167, -122.307' ); 
$testdata[] = new TO( 'Seatac Airport (TFlite data)', 'N47 26.59 W122 18.42' ); 
 
$testdata[] = new TO( 'Sydney Opera House', '-33.8567844,151.2152966' ); 
$testdata[] = new TO( 'Sydney Opera House', '33°51′24.4″S 151°12\'55.1"E' ); 
 
$testdata[] = new TO( 'The Taj Mahal', ' 27.1750151,   78.0421552' ); 
$testdata[] = new TO( 'The Taj Mahal', '27 ° 10\'30.05 "North and 78 ° 2\'31.76" East' ); 
$testdata[] = new TO( 'The Taj Mahal', '27.1750154 78.042155'); 
$testdata[] = new TO( 'The Taj Mahal', '7JVW52GR+2V'); 
 
// BAD examples 
$testdata[] = new TO( 'Malformed LNG', 'Lat N48 42.29, Long W122.54.40' );  //   Note two decimal points, a not-well-formed number 
$testdata[] = new TO( 'Impossible LAT', '138.9304,-77.1481' ); 
$testdata[] = new TO( 'Impossible LNG', '38.9304,-277.1481' ); 
$testdata[] = new TO( 'Impossible LAT,LNG', '138.9304,-277.1481' ); 
$testdata[] = new TO( 'Coordinates not Geocode or OLC', '0' ); 
$testdata[] = new TO( 'Coordinates missing', '' ); 
$testdata[] = new TO( 'Coordinates goofy', 'gooseball' ); 
 
 
// Process each of the examples 
echo '<meta charset="utf-8" />'; 
echo '<pre>'; 
foreach ($testdata as $to) 
{ 
    echo "<h3>$to->name: " . '<a target="_blank" href="https://www.google.com/maps?q=' . urlencode($to->geo) . '">' . $to->geo . '</a> </h3>'; 
    $geothing = new Geocode($to->geo, $to->name); 
    if (empty($geothing->error)) { 
        print_r($geothing); 
        echo '<a target="_blank" href="https://www.google.com/search?q=' . urlencode($geothing->geo)        . '">' . $geothing->geo     . '</a> computed geocode in D.ddd decimal' . PHP_EOL; 
        echo '<a target="_blank" href="https://www.google.com/search?q=' . urlencode($geothing->geo_dd)     . '">' . $geothing->geo_dd  . '</a> computed geocode in D.ddd° decimal degrees' . PHP_EOL; 
        echo '<a target="_blank" href="https://www.google.com/search?q=' . urlencode($geothing->geo_dmd)    . '">' . $geothing->geo_dmd . '</a> computed geocode in D°M.mmm\' degrees decimal minutes' . PHP_EOL; 
        echo '<a target="_blank" href="https://www.google.com/search?q=' . urlencode($geothing->geo_dms)    . '">' . $geothing->geo_dms . '</a> computed geocode in D°M\'S.sss" degrees minutes decimal seconds' . PHP_EOL; 
        echo '<a target="_blank" href="https://plus.codes/'              . urlencode($geothing->olc)        . '">' . $geothing->olc     . '</a> open location code link on plus.codes' . PHP_EOL; 
    } 
    else { 
        echo $geothing->error . PHP_EOL; 
    } 
    echo PHP_EOL; 
} 
 
 |