2010-10-02 30 views
5

Estoy usando el Geo :: Coder :: Muchos módulos perl & obteniendo algunos resultados raros. Cuando configuro Google como proveedor, los resultados se muestran correctamente. Sin embargo, establecer el proveedor en Bing revertirá los valores de longitud de latitud &. Por ejemplo:Geocodificación .... hice algo mal?

use Geo::Coder::Google; 
use Geo::Coder::Bing; 
use Geo::Coder::Many; 
use Geo::Coder::Many::Util qw(country_filter); 

# Create the Geo::Coder::Many object, telling it to use a 'weighted random' 
# scheduling method 
my $options = { 
    scheduler_type => 'WRR', 
}; 
my $geocoder_many = Geo::Coder::Many->new($options); 


# Create and add a geocoder 
my $Locatorize = Geo::Coder::Google->new(apikey => 'yur Key'); 
my $Locatorize_options = { 
    geocoder => $Locatorize, 
    daily_limit => 2500, #google has a 2,500 limit/day 
}; 
$geocoder_many->add_geocoder($Locatorize_options); 


my $result = $geocoder_many->geocode( 
    { 
     location => '1600 Amphitheatre Parkway Mountain View, CA 94043' 
    } 
); 

if (defined $result) { 
    print "Longitude: ",  $result->{longitude},  "\n"; 
    print "Latitude: ",  $result->{latitude},  "\n"; 
} 
else { 
    print "Failed to geocode!\n"; 
} 

Esto devolverá (correctamente):

Longitud: -122.085099 Latitud: 37.422782

Cuando cambio el proveedor de Bing, las cosas van mal:

my $WhereIzIt = Geo::Coder::Bing->new(key => 'Yur key'); 
my $WhereIzIt_options = { 
    geocoder => $WhereIzIt, 
    daily_limit => 4000, 
}; 
$geocoder_many->add_geocoder($WhereIzIt_options); 

Esto devuelve:

Longitud: 37.42317 6 Latitud: -122.085962

Bing devuelve constantemente los resultados al revés? ¿Cómo cambiaría esto en el módulo?

+0

He notificado al autor del módulo por correo electrónico, pero ¿cómo puedo hacer la corrección yo mismo? – kristen

Respuesta

10

En Geo/Coder/Many/Bing.pm, encontrar las líneas:

longitude => $raw_reply->{point}->{coordinates}->[0], 
latitude => $raw_reply->{point}->{coordinates}->[1], 

y cambie el 0 y 1:

longitude => $raw_reply->{point}->{coordinates}->[1], 
latitude => $raw_reply->{point}->{coordinates}->[0], 

Esto es un error en Geo-Coder-Many, no Geo :: :: Coder Bing. Asegúrese de informar el error y esta solución al right author.

+0

+1: eso es simplemente excelente, descubriste que ... – dawg

+0

Este error se corrigió en [Geo-Coder-Many] (http://search.cpan.org/dist/Geo-Coder-Many/) 0.14, que fue lanzado ayer. – cjm

Cuestiones relacionadas