<div dir="ltr"><div>Quanto ao CEP, é simples tambem, vc precisa fazer o seguinte para descobrir as coordenadas relacionadas a um cep... o myagawa implementou um módulo que facilita esse tipo de busca:<br><br></div><div>abs,<br>
<br></div><div>Hernan<br></div><div><br># Imprime coordenadas relacionadas a um CEP<br>use Geo::Coder::Google;<br>use Data::Printer;<br>my $cep = "04363-040" ,<br> $geocoder = Geo::Coder::Google->new(apiver => 3),<br>
$location = $geocoder->geocode( location => "Brasil, cep $cep" );<br>print "A latutide e longitude para o $cep é: \n";<br>print "Latitude: ", $location->{ geometry }->{ location }->{ lat }, "\n";<br>
print "Longitude: ", $location->{ geometry }->{ location }->{ lng }, "\n";<br><br><br></div><br><div><br><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/31 Hernan Lopes <span dir="ltr"><<a href="mailto:hernanlopes@gmail.com" target="_blank">hernanlopes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Ahh, e vc pode implementar em qq linguagem, é bem simples, segue implementacao em JS pra vc colar no seu firebug:<br>
<br></div>abs,<br><br></div>Hernan<br><div><div><br><pre>var to_radian = function( val ) {<br>
return val * Math.PI / 180;<br>}<br><br>var cidade = {<br> new_york : {<br> lat : 40.697169,<br> lon : -74.052658<br> },<br> sao_paulo : {<br> lat : -23.548943,<br> lon : -46.638818<br>
}<br>};<br><br>var partida = cidade[ "new_york" ];<br>var destino = cidade[ "sao_paulo" ];<br><br>var raio_da_terra = 6371; // <a href="http://pt.wikipedia.org/wiki/Raio_da_Terra" target="_blank">http://pt.wikipedia.org/wiki/Raio_da_Terra</a><br>
var dLat = to_radian(destino["lat"]-partida["lat"]);<br>var dLon = to_radian(destino["lon"]-partida["lon"]);<br>var lat1 = to_radian(partida["lat"]);<br>var lat2 = to_radian(destino["lat"]);<br>
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +<br> Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); <br>var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); <br>var d = raio_da_terra * c;<br>
console.log( "A distância entre Nova York e São Paulo é: " + d + " km ");</pre>
<br></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/31 Hernan Lopes <span dir="ltr"><<a href="mailto:hernanlopes@gmail.com" target="_blank">hernanlopes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div><div><div><div>Segue um exemplo prático da fórmula de haversine... essa fórmula calcula a distância entre duas coordenadas com latitude e longitude.<br><br></div>O exemplo abaixo demonstra o cálculo da distância entre são paulo e nova york: <br>
</div>Se fizer o mesmo procedimento no google maps, vai ver que o valor é igual.<br><br></div>abs,<br><br></div>Hernan<br><div><div><div><div><br>use strict;<br>use warnings;<br>use GIS::Distance; <br>use Data::Printer;<br>
<br>my $gis = GIS::Distance->new();<br> $gis->formula( 'Haversine' );<br><br>my $cidade = { <br> new_york => { <br> lat => 40.697169, <br> lon => -74.052658 <br> } , <br>
sao_paulo => { <br> lat => -23.548943 , <br> lon => -46.638818 <br> } <br>} ; <br>my @partida = ( $cidade->{ new_york }->{ lat }, $cidade->{ new_york }->{ lon } );<br>my @destino = ( $cidade->{ sao_paulo }->{ lat }, $cidade->{ sao_paulo }->{ lon } );<br>
my $distance = $gis->distance( @partida => @destino );<br>warn "A distância entre Nova york e São Paulo é: " , $distance->{ values }->{ $distance->{unit} } , " ", $distance->{unit};<br>
<br><br><br></div></div></div></div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/31 Hernan Lopes <span dir="ltr"><<a href="mailto:hernanlopes@gmail.com" target="_blank">hernanlopes@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">De qualquer maneira, dadas duas coordenadas, a fórmula da distância de haversine vai te dar a resposta.<br>
<br>É só vc usar este módulo com a opcão "Haversine" e as coordenadas, conforme: <a href="https://metacpan.org/module/GIS::Distance" target="_blank">https://metacpan.org/module/GIS::Distance</a><br>
<br><br></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/8/31 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Obrigado Stan, vou dar uma olhada.<div><br></div><div>Desculpe se a pergunta é idiota, mas tem binding disso em Perl?</div></div><div><div><div class="gmail_extra"><br><br><div class="gmail_quote">
2013/8/31 Stanislaw Pusep <span dir="ltr"><<a href="mailto:creaktive@gmail.com" target="_blank">creaktive@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Tem API do Google para isso, o Distance Matrix:<div><br><div><div> var service = new google.maps.DistanceMatrixService();</div>
<div> service.getDistanceMatrix({</div><div> origins: players,</div>
<div> destinations: players,</div><div> travelMode: google.maps.TravelMode.WALKING,</div><div> }, function (response, status) {</div><div> if (status == google.maps.DistanceMatrixStatus.OK) {</div>
<div> var origins = response.originAddresses;</div><div> var destinations = response.destinationAddresses;</div><div> ...</div><div> }</div><div> });</div></div><div><br></div></div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote"><div><div>2013/8/31 Blabos de Blebe <span dir="ltr"><<a href="mailto:blabos@gmail.com" target="_blank">blabos@gmail.com</a>></span><br></div>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>
<div dir="ltr">Fala pessoal,<div><br></div><div>Eu estou fazendo mais um trabalho final na faculdade ( é, eu sei, é o segundo, longa história... ) e vou precisar integrar com uma api de mapas.</div><div><br></div>
<div>O trabalho é um site pra ajudar jogadores de magic, e uma das ajudas é encontrar a loja mais próxima.</div><div><br></div><div>Eu nunca mexi com mapas antes então gostaria que vocês me apontassem documentação, módulos, dicas etc.</div>
<div><br></div><div>Basicamente o que eu preciso é plotar lojas no mapa e calcular distâncias entre elas e entre os jogadores, da mesma forma que o locator da wizards faz:</div><div><br></div><div>
<a href="http://locator.wizards.com/#brand=magic&a=search&p=20550-060&c=-23.7246761476923,-46.57210253923074&massmarket=no" target="_blank">http://locator.wizards.com/#brand=magic&a=search&p=20550-060&c=-23.7246761476923,-46.57210253923074&massmarket=no</a><br>
</div><div><br></div><div>Parto do pressuposto que eu sei pelo menos o CEP de todo mundo.</div><div><br></div><div>Qualquer ajuda é bem vinda.</div><div><br></div><div>[]'s</div><div>
<br></div><div><br></div><div><br></div></div>
<br></div></div>=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>
<br>=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>
</div></div><br>=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>