+ return $xml->{prefecture}->{pname} .
+ $xml->{municipality}->{mname} .
+ $xml->{local}->{section};
+}
+
+# maps.google.com を使ってgeocode逆変換
+# WGS84系を渡すこと
+sub get_rgeocode_google{
+ my ($lat, $lon) = @_;
+ my $s = Net::HTTP->new(Host => 'maps.google.com') || return;
+ $s->write_request(
+ 'GET' => "/maps/geo?oe=utf-8&ll=$lat%2C$lon&output=xml&callback=gmap",
+ 'Accept-Language' => 'ja'
+ );
+ $s->read_response_headers();
+ my $xml_code;
+ for(;;){
+ my $buf;
+ my $n = $s->read_entity_body($buf, 1024);
+ return unless defined $n;
+ last unless $n;
+ $xml_code .= $buf;
+ }
+ my $xml = XMLin($xml_code);
+ if(defined $xml){
+ if(defined $xml->{Response}){
+ if(defined $xml->{Response}->{Placemark}){
+ if(defined $xml->{Response}->{Placemark}->{p1}){
+ return $xml->{Response}->{Placemark}->{p1}->{address};
+ }
+ }
+ }
+ }
+ return;
+}
+
+sub get_rgeocode{
+ my $s;
+ if($::cf->rgeocode_server() eq 'refits'){
+ $s = get_rgeocode_refits(@_);
+ }elsif($::cf->rgeocode_server() eq 'google'){
+ $s = get_rgeocode_google(@_);
+ }else{
+ return;
+ }
+ if(Encode::is_utf8($s)){
+ Encode::_utf8_off($s);
+ }
+ return $s;