[SP-pm] Mapas

Hernan Lopes hernanlopes at gmail.com
Sat Aug 31 14:55:53 PDT 2013


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 <hernanlopes at 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 <blabos at gmail.com>
>
>> Obrigado Stan, vou dar uma olhada.
>>
>> Desculpe se a pergunta é idiota, mas tem binding disso em Perl?
>>
>>
>> 2013/8/31 Stanislaw Pusep <creaktive at 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 <blabos at 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 at 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 at 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 at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20130831/7787d71a/attachment.html>


More information about the SaoPaulo-pm mailing list