-
Notifications
You must be signed in to change notification settings - Fork 0
/
address_query.php
52 lines (49 loc) · 1.19 KB
/
address_query.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
/**
* Return class for the address
*/
class AddressQueryReturn {
private $placemark;
private $lat;
private $lon;
public function __construct($placemark, $lat, $lon) {
$this->placemark = $placemark;
$this->lat = $lat;
$this->lon = $lon;
}
public function __get($name) {
return $this->$name;
}
}
class AddressQuerier {
/**
* Does the query and returns the coordinates
*/
public static function queryCoordinates($street, $street_number, $city) {
$query = "$street $street_number, $city, Deutschland";
$xml = simplexml_load_file("http://maps.google.com/maps?q=".rawurlencode($query)."&output=kml");
if (!$xml) {
return null;
}
if (!$xml->Placemark || !$xml->Placemark->LookAt) {
if ($xml->Folder) {
$pn = (string)($xml->Folder->Placemark->name);
} else {
$pn = (string)($xml->Placemark->name);
}
if (preg_match("/<a href=\"(.+?)\">/", $pn, $matches)) {
$xml = simplexml_load_file($matches[1]);
if (!$xml)
return null;
}
}
if ($xml->Placemark) {
return new AddressQueryReturn(
(string)$xml->Placemark->name,
floatval($xml->Placemark->LookAt->latitude),
floatval($xml->Placemark->LookAt->longitude));
}
return null;
}
}
?>