[SP-pm] Mapas

Hernan Lopes hernanlopes at gmail.com
Sat Aug 31 15:14:35 PDT 2013


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 <hernanlopes at 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 <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/0351bf21/attachment.html>


More information about the SaoPaulo-pm mailing list