Revize 1338
Přidáno uživatelem Michal Kliment před více než 12 roky(ů)
freenetis/branches/testing/application/controllers/address_points.php | ||
---|---|---|
// redirect
|
||
url::redirect('address_points/show_all');
|
||
}
|
||
|
||
|
||
/**
|
||
* Help AJAX function to fill GPS by street, street_id, town and country
|
||
*
|
||
*
|
||
* @author Michal Kliment, Ondřej Fibich
|
||
*/
|
||
public function get_gps_by_street_street_number_town_country()
|
||
public function get_gps_by_address()
|
||
{
|
||
$street_id = (int) $this->input->get('street_id');
|
||
$street_number = (int) $this->input->get('street_number');
|
||
$town_id = (int) $this->input->get('town_id');
|
||
$country_id = (int) $this->input->get('country_id');
|
||
|
||
|
||
// first try find in already exist address points
|
||
$address_point = ORM::factory('address_point')
|
||
->get_address_point_with_gps_by_street_street_number_town_country
|
||
(
|
||
$street_id, $street_number, $town_id, $country_id
|
||
);
|
||
|
||
if ($address_point)
|
||
|
||
// success, we end
|
||
if ($address_point && strlen($address_point->gps))
|
||
{
|
||
$gps = explode(' ', $address_point->gps);
|
||
echo gps::real2degrees($gps[0], FALSE) . ' ';
|
||
echo gps::real2degrees($gps[1], FALSE);
|
||
|
||
return;
|
||
}
|
||
|
||
// try find by google API
|
||
$street_model = new Street_Model($street_id);
|
||
$town_model= new Town_Model($town_id);
|
||
$country_model = new Country_Model($country_id);
|
||
|
||
$street = ($street_model) ? $street_model->street : '';
|
||
|
||
$town = '';
|
||
if ($town_model && $town_model->id)
|
||
{
|
||
$town = $town_model->town;
|
||
|
||
if ($town_model->quarter != '')
|
||
$town .= " - ".$town_model->quarter;
|
||
|
||
$town .= ", ".$town_model->zip_code;
|
||
}
|
||
|
||
$country = ($country_model) ? $country_model->country_name : '';
|
||
|
||
if (!$street_number || $town == '' || $country == '')
|
||
return;
|
||
|
||
$data = self::get_geocode_from_google ($street, $street_number, $town, $country);
|
||
|
||
if (!$data)
|
||
return;
|
||
|
||
echo gps::real2degrees(num::decimal_point($data->results[0]->geometry->location->lat), FALSE)." ".
|
||
gps::real2degrees(num::decimal_point($data->results[0]->geometry->location->lng), FALSE);
|
||
|
||
}
|
||
|
||
/**
|
||
... | ... | |
$URL = "http://maps.googleapis.com/maps/api/geocode/json?address="
|
||
.urlencode($address)."&sensor=false";
|
||
|
||
$json = @file_get_contents($URL);
|
||
$json = file_get_contents($URL);
|
||
|
||
$data = json_decode($json);
|
||
|
||
... | ... | |
}
|
||
|
||
/**
|
||
* AJAX function to return GPS coords for given street, street number,
|
||
* town and country
|
||
*
|
||
* @author Michal Kliment
|
||
*/
|
||
public function get_gps_by_address_from_google()
|
||
{
|
||
$street = $this->input->get('street');
|
||
$street_number = (int) $this->input->get('street_number');
|
||
$town = $this->input->get('town');
|
||
$country = $this->input->get('country');
|
||
|
||
if ($street == '' || $street_number == '' || $town == '' || $country == '')
|
||
return;
|
||
|
||
$data = self::get_geocode_from_google ($street, $street_number, $town, $country);
|
||
|
||
if (!$data)
|
||
return;
|
||
|
||
echo gps::real2degrees(num::decimal_point($data->results[0]->geometry->location->lat), FALSE)." ".
|
||
gps::real2degrees(num::decimal_point($data->results[0]->geometry->location->lng), FALSE);
|
||
}
|
||
|
||
/**
|
||
* Function to autocomplete empty GPS coords
|
||
*
|
||
* @author Michal Kliment
|
freenetis/branches/testing/application/views/js/__pieces/gps.php | ||
---|---|---|
// try to find GPS for address point and set it (esed ad devices and members)
|
||
$("#street_id, #street_number, #town_id, #country_id").keyup(function ()
|
||
{
|
||
$.get("<?php echo url_lang::base() ?>address_points/get_gps_by_street_street_number_town_country/",
|
||
$.get("<?php echo url_lang::base() ?>address_points/get_gps_by_address/",
|
||
{
|
||
"street_id": $("#street_id").val(),
|
||
"street_number": $("#street_number").val(),
|
||
"town_id": $("#town_id").val(),
|
||
"town_id": $("#town_id").val(),
|
||
"country_id": $("#country_id").val()
|
||
}, function(data)
|
||
{
|
||
... | ... | |
$("#gpsx").val(s[0]);
|
||
$("#gpsy").val(s[1]);
|
||
}
|
||
else
|
||
{
|
||
$.get("<?php echo url_lang::base() ?>address_points/get_gps_by_address_from_google/",
|
||
{
|
||
"street": $("#street_id option:selected").text(),
|
||
"street_number": $("#street_number").val(),
|
||
"town": $("#town_id option:selected").text(),
|
||
"country": $("#country_id option:selected").text()
|
||
}, function(data)
|
||
{
|
||
var s = data.split(" ");
|
||
$("#gpsx").val(s[0]);
|
||
$("#gpsy").val(s[1]);
|
||
});
|
||
|
||
}
|
||
});
|
||
});
|
||
|
||
... | ... | |
// try to find GPS for domicile address point and set it (used at members)
|
||
$("#domicile_street_id, #domicile_street_number, #domicile_town_id, #domicile_country_id").keyup(function ()
|
||
{
|
||
$.get("<?php echo url_lang::base() ?>address_points/get_gps_by_street_street_number_town_country/",
|
||
$.get("<?php echo url_lang::base() ?>address_points/get_gps_by_address/",
|
||
{
|
||
"street_id": $("#domicile_street_id").val(),
|
||
"street_number": $("#domicile_street_number").val(),
|
Také k dispozici: Unified diff
Opraven problem s GPS (#24).