source: subversion/sites/other/osmabrowser/geocoder_funcs.php @ 8259

Last change on this file since 8259 was 1478, checked in by nick, 13 years ago

Added current osmabrowser to svn

File size: 1.6 KB
Line 
1<?php
2
3#globals
4$inLat = $inLong =  false;
5$lat = $long = 0;
6#end globals
7
8function geocoderxml($place,$country)
9{
10        $url = "http://brainoff.com/geocoder/rest/?city=".urlencode($place).
11                                ",$country";
12        $ch=curl_init ($url);
13        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
14        curl_setopt($ch,CURLOPT_HEADER,false);
15        $resp=curl_exec($ch);
16        curl_close($ch);
17        return $resp;
18}
19
20function geocoder($place, $country)
21{
22        global $lat, $long;
23        $url = "http://brainoff.com/geocoder/rest/?city=".urlencode($place).
24                                ",$country";
25        $ch=curl_init ($url);
26        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
27        curl_setopt($ch,CURLOPT_HEADER,false);
28        $resp=curl_exec($ch);
29        curl_close($ch);
30
31        $parser = xml_parser_create();
32        xml_set_element_handler($parser,"on_start_element","on_end_element");
33        xml_set_character_data_handler($parser,"on_characters");
34
35        $resp2 = explode("\n",$resp);
36        foreach($resp2 as $line)       
37        {
38                if (!xml_parse($parser,$line))
39                        return false;   
40        }
41
42        return array("lat"=>$lat,"long"=>$long);
43}
44
45
46#NB the PHP expat library reads in all tags as capitals - even if they're
47#lower case!!!
48function on_start_element($parser,$element,$attrs)
49{
50        global $inLat, $inLong;
51
52        if($element=="GEO:LAT") 
53        {
54                $inLat = true;
55        }
56        elseif($element=="GEO:LONG")
57        {
58                $inLong = true;
59        }
60}
61
62function on_end_element($parser, $element)
63{
64        global $inLat, $inLong;
65
66        if($element=="GEO:LAT") 
67        {
68                $inLat = false;
69        }
70        elseif($element=="GEO:LONG")
71        {
72                $inLong = false;
73        }
74}
75
76function on_characters ($parser, $characters)
77{
78        global $inLat, $inLong;
79        global $lat, $long;
80
81        if($inLat)
82        {
83                $lat=$characters;
84        }
85        else if ($inLong)
86        {
87                $long=$characters;
88        }
89}
90?>
Note: See TracBrowser for help on using the repository browser.