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