Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 1338

Přidáno uživatelem Michal Kliment před více než 12 roky(ů)

Opraven problem s GPS (#24).

Zobrazit rozdíly:

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