The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

WWW::YahooMaps - Create links to Yahoo! Maps

SYNOPSIS

 use WWW::YahooMaps;

 #first method: PASSING ADDRESS BIT-BY-BIT
 my %addr = (
  "street" => "555 N Michigan Ave",
  "city" => "Chicago, IL 60611",
  "country" => "us",
 );

 if (my $url = WWW::YahooMaps::hashreftolink(\%addr)){
      print "url1 $url\n";
 }

 #second method: ADDRESS INFO IN STRING
 #separators can be ";" or newline "\n"
 #street should come before city
 #pass an additional 1 at the end if you want to pass city first
 if (my $url = WWW::YahooMaps::stringtolink("us","us","101 Morris Street; Sebastopol, CA 95472")){
      print "url2 $url\n";
 }

 #third method: CALL A FUNCTION WITH BIT-BY-BIT PARAMETERS
 if (my $url = WWW::YahooMaps::stringtolink("us","us","Paris, TX; Main Street", 1)){
      print "url3 $url\n";
 }

The code above will print: url1 http://maps.yahoo.com/py/lg:/lc:/maps_result?BFCat=&Pyt=Tmap&newFL=&addr=555%20N%20Michigan%20Ave&csz=Chicago%2C%20IL%2060611&country=us url2 http://maps.yahoo.com/py/lg:/lc:/maps_result?BFCat=&Pyt=Tmap&newFL=&addr=101%20Morris%20Street&csz=Sebastopol%2C%20CA%2095472&country=us url3 http://maps.yahoo.com/py/lg:/lc:/maps_result?BFCat=&Pyt=Tmap&newFL=&addr=Main%20Street&csz=Paris%2C%20TX&country=us

DESCRIPTION

Methods

hashreftolink()

Pass a reference to a hash to hashreftolink() and get a link to the corresponding Yahoo! map.

The keys of the hash are street (optional), city, and country. The values of the keys country and language must be valid ISO 3166 two letter codes, and can be tested by the functions testcountry() and testlanguage() respectively.

The key, value pair street is optional, however adding it leads to a much more accurate map.

The value of city can be either a postal code or a city name, however adding both produces much more accurate map links. If a city name is ambiguous, for example there are multiple cities with that name, the link will lead to a page with links to the various cities of that name.

stringtolink()

Or, if you have a ready-made string with the adress info, pass it to stringtolink().

The parameters are country, language, string and swap. In string, street and city should be separated by a semicolon ";" or a newline "\n". Since street is optional, you can also pass "; Paris, TX" or "\n Chicago, IL". Pass swap = 1 if you have a string where the city comes first, address second, e.g.: "New York, NY; Wall Street".

Countries

Yahoo shut down maps services in Europe. To my knowledge, they only offer maps for the US and Canade.

 - Canada (ca) - only in combination with language = "us"
 - U.S.A. (us) - only in combination with language = "us"

testcountry()

Use testcountry() to determine which countries are available, e.g.: testcountry("it") => returns 1, testcountry("tv") => returns 0.

Languages

As Yahoo cancelled Maps in Europe, "us" remains as the only language option. The language remains in the module for legacy reasons.

testlang()

Use testlang() to determine which languages are available, e.g.: testlang("es") => returns 0, testlang("us") => returns 1. Legacy function.

General Remarks If Yahoo can't find the exact address you pass, it will show the user its best guess with some alternative links.

REQUIREMENTS

uses URI::Escape.

AUTHOR

Gabor Cselle, http://n.ethz.ch/student/cselleg, gabor (at) student [dot] ethz [dot] ch

THANKS TO

Ed Freyfogle, who came up with the idea and wrote a first draft.

REVISIONS

0.1 : first version

0.2 : added Canada to countries, forces language="us" for US/CA, added docs for testcountry() and testlang()

0.3 Yahoo cancelled all non-US maps products: new version allows language = "us", country = "us"/"ca" only