2010-10-02 17 views
5

Ich benutze die Geo :: Coder :: Viele Perl Modul & bekommen einige seltsame Ergebnisse. Wenn ich Google als Anbieter einstelle, werden die Ergebnisse korrekt angezeigt. Wenn Sie jedoch den Provider auf Bing setzen, werden die Längenwerte des Breitengrades & umgekehrt. Zum Beispiel:Geocoding .... habe ich etwas falsch gemacht?

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"; 
} 

Dies wird wieder (richtig):

Longitude: -122,085099 Latitude: 37,422782

Als ich den Anbieter Bing ändern, die Dinge schief gehen:

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

Dies gibt:

Längengrad: 37,42317 6 Breitengrad: -122.085962

Bing gibt die Ergebnisse konsistent zurück? Wie würde ich das im Modul ändern?

+0

Ich habe den Autor des Moduls per E-Mail benachrichtigt, aber wie kann ich das selbst beheben? – kristen

Antwort

10

In Geo/Coder/Many/Bing.pm finden die Linien:

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

und tauschen die 0 und 1:

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

Dies ist ein Fehler in Geo-Coder-Many, nicht Geo :: Coder :: Bing. Stellen Sie sicher, dass Sie den Fehler und dieses Update an die right author gemeldet haben.

+0

+1: das ist einfach hervorragend Sie gefunden, dass ... – dawg

+0

Dieser Fehler ist behoben in [Geo-Coder-Many] (http://search.cpan.org/dist/Geo-Coder-Many/) 0.14, die wurde gestern veröffentlicht. – cjm

Verwandte Themen