-
Notifications
You must be signed in to change notification settings - Fork 0
/
AddressToCoords.php
53 lines (44 loc) · 1.03 KB
/
AddressToCoords.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
53
<?php
/**
* Copyright (C) 2013 Sope
*
* @author Simon Kusterer
* @copyright Simon Kusterer 2013
*/
namespace Sope\AddressToCoords;
class AddressToCoords
{
/**
* Retrieve LAT / LON Coords using cache first.
*
* @param $strAddress
* @param string $strResolver
* @return CoordscacheModel|null
*/
public static function resolve($strAddress, $strResolver = 'default')
{
$strAddress = trim(strtolower($strAddress));
$strResolverClass = $GLOBALS['addresstocoords']['resolvers'][$strResolver];
$objCoords = \CoordscacheModel::findByTerm($strAddress);
if (is_null($objCoords))
{
$objCoords = new \CoordscacheModel();
$objCoords->term = $strAddress;
$arrResult = $strResolverClass::resolve($strAddress);
if (!is_null($arrResult))
{
$objCoords->address = $arrResult['address'];
$objCoords->lat = $arrResult['lat'];
$objCoords->lon = $arrResult['lon'];
}
$objCoords->save();
}
if (empty($objCoords->lat) || empty($objCoords->lon))
{
return;
} else
{
return $objCoords;
}
}
}