vrodrigues Posted June 8, 2012 at 01:49 AM Report Share #461285 Posted June 8, 2012 at 01:49 AM (edited) Boa noite! Eu estou aqui com um problema e o mais estranho é que isto dava. Entao é o seguinte ,estou a fazer uma aplicação que ajuda na procura de emprego para isso existe uma opção para a procura de ofertas de emprego pela geolocalização, então eu tenho uma função php que recebe como parametros os seguintes valores : .latitude e longitude do local em que o utilizador esta o raio que o utilizador pretende pesquisar e o que é que o utilizador pretende pesquisar depois disto era suposto o php devolver apenas as ofertas de emprego que estivessem nesse raio. So que o resultado das distancia que dá são muito elevados. para os concelhos que existem na Base de dados. Por exemplo ele está a dizer que a distancia ente aveiro e lisboa sao 851km ! deixo aqui o codigo, alguem tem alguma ideia do que se passa? $lat1 = $_GET['lat']; $log1 = $_GET['log']; $r = utf8_encode($_GET['raio']); $latitude = floatval($lat1); $longitude = floatval($log1); $raio = floatval($r); // estado = 1 -> geo || estado=2 ->cidade $estado = $_GET['estado']; if($estado==1){ $sql = "SELECT * FROM ofertas INNER JOIN concelhos ON ofertas.concelhos_idconcelhos = concelhos.idconcelhos WHERE ofertas.titulo like'$pesquisa'"; $query = mysql_query($sql); $array = mysql_fetch_array($query); $row = mysql_num_rows($query); if ($row > 0) { $response = Array(); ; do { $tipo_output = "json"; // pode ser utilizado o xml também $google_api = "0R4r34bcHA6I0Ppts5oHcxhgoPmdOvt4Hz2cA2w"; // a API KEY do Google Maps //$google_api ="0R4r34bcHA6K3WJdurXwV1UW3WvI9NbwW_EA9-A"; $cidade = $array['concelho']; //concelhos consoante a query $endereco_desejado = urlencode(utf8_encode("$cidade, PT")); $endereco_final = "http://maps.google.com/maps/api/geocode/json?address=" . $endereco_desejado . "&sensor=true"; //chamada da API do google $string = file_get_contents($endereco_final); //resultado da API $json_a = json_decode($string); //json decoder //busca da lat e log $longitude2 = $json_a -> results[0] -> geometry -> location -> lng; $latitude2 = $json_a -> results[0] -> geometry -> location -> lat; //calculo da distancia $earth_radius = 6371.0; $latitude1 = $latitude * pi() / 180.0; $longitude1 = $longitude * pi() / 180.0; $latitude2 = $latitude2 * pi() / 180.0; $longitude2 = $longitude2 * pi() / 180.0; $dLat = $latitude2 - $latitude1; $dLong = $longitude2 - $longitude1; $a = sin($dLat / 2) * sin($dLat / 2) + cos($latitude1) * cos($latitude2) * sin($dLong / 2) * sin($dLong / 2); $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); $resultado = intval($earth_radius * $c); // resultado em km. if ($resultado <= $raio) { $response = utf8_decode($array['titulo']) . "|"; echo $response; json_encode(utf8_encode($response)); $flag_r = true; } } while ($array = mysql_fetch_assoc($query)); if ($flag_r == false) { $response = "Não existem ofertas"; echo $response; } } json_encode(utf8_encode($response)); Edited June 8, 2012 at 09:21 AM by vrodrigues Link to comment Share on other sites More sharing options...
brunoais Posted June 8, 2012 at 09:09 AM Report Share #461304 Posted June 8, 2012 at 09:09 AM Se não indentares o código corretamente estás queimado, ninguém te consegue ajudar... "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
vrodrigues Posted June 8, 2012 at 09:22 AM Author Report Share #461309 Posted June 8, 2012 at 09:22 AM obrigada pelo aviso, eu normalmente tenho sempre o codigo indentado, ao copiar para aqui não ficou e nao reparei Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 8, 2012 at 09:28 AM Report Share #461312 Posted June 8, 2012 at 09:28 AM uma vista muito rápida pela net ... parece que o que tens é um pouco diferente disto principalmente no que toca ao cálculo do alpha IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
vrodrigues Posted June 8, 2012 at 11:13 AM Author Report Share #461375 Posted June 8, 2012 at 11:13 AM (edited) eu estou a utilizar a formula de haversine, para o calculo... Edited June 8, 2012 at 11:14 AM by vrodrigues Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 8, 2012 at 11:21 AM Report Share #461377 Posted June 8, 2012 at 11:21 AM (edited) porque é que estás a usar atan2 em vez do que vem na fórmula asin ??? teu: $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); da wikipedia $c = 2 * asin(sqrt($a)); Edited June 8, 2012 at 11:22 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
vrodrigues Posted June 8, 2012 at 01:00 PM Author Report Share #461391 Posted June 8, 2012 at 01:00 PM (edited) porque ele não reconhe o asin... 😕 dá este erro : Warning: Wrong parameter count for asin() in XXX/teste.php on line 196 Edited June 8, 2012 at 01:01 PM by vrodrigues Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 8, 2012 at 01:54 PM Report Share #461404 Posted June 8, 2012 at 01:54 PM (edited) porque ele não reconhe o asin... 😕 dá este erro : Warning: Wrong parameter count for asin() in XXX/teste.php on line 196 alteraste os argumentos da função como disse ?? aqui diz que é somente um parametro, de acordo com o pertendido edit : tinha um link para documentação em C ... alterado para PHP Edited June 8, 2012 at 02:00 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
vrodrigues Posted June 8, 2012 at 01:57 PM Author Report Share #461406 Posted June 8, 2012 at 01:57 PM sim troquei ! so depois apareceu esse erro Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted June 8, 2012 at 01:59 PM Report Share #461410 Posted June 8, 2012 at 01:59 PM faz post da linha do asin .. porque de outro modo vai ser dificil IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now