現在位置: トップ > YOLP公式ブログ > ニュース > 郵便番号から場所と関連情報を取得する「郵便番号API」公開しました!

ここから本文です

郵便番号から場所と関連情報を取得する「郵便番号API」公開しました!

[ニュース]  2012年10月12日
こんにちは、Yahoo! Open Local Platform (YOLP)の櫻井です。
いつもYOLPをご利用いただきありがとうございます。

このたび、YOLPから郵便番号検索APIを公開しました。
このAPIは、郵便番号を指定すると、住所・位置情報などが取得できるものです。町域郵便番号、ビル郵便番号などをカテゴリー別に指定したり、番号順や住所の読み順でソートすることも可能です。

■ 郵便番号検索API
http://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/zipcodesearch.html

郵便番号検索APIの使い方

郵便番号から住所などを知りたい場合に活用できます。
例えば郵便番号や住所を登録するサイト・サービスで、ユーザーが郵便番号を入力すると、こちらのAPIから住所情報を取得でき、ユーザーの住所登録時の手間を減らせます。

では実際に、このAPIで郵便番号「100-0005」の情報を取得してみましょう。

サンプルリクエスト
http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/zipCodeSearch?appid=<あなたのアプリケーションID>&query=100-0005
※リクエスト時に指定する郵便番号は、「-」(ハイフン)の有無にかかわらず動作します。

<あなたのアプリケーションID>には、ご自身のアプリケーションIDを入れてください。
アプリケーションIDについてはこちらをご覧ください。

サンプルレスポンス
<YDF xmlns="http://olp.yahooapis.jp/ydf/1.0" totalResultsReturned="1" totalResultsAvailable="1" firstResultPosition="1">
  <ResultInfo>
    <Count>1</Count>
    <Total>1</Total>
    <Start>1</Start>
    <Status>200</Status>
    <Description/>
    <Copyright/>
    <Latency>0.018</Latency>
  </ResultInfo>
  <Feature>
    <Id>a61b2119936214b5d2f16686c4354866</Id>
    <Gid/>
    <Name>〒100-0005</Name>
    <Geometry>
      <Type>point</Type>
      <Coordinates>139.76542424,35.68054740</Coordinates>
    </Geometry>
    <Category>郵便番号</Category>
    <Category>町域郵便番号</Category>
    <Description>Yahoo!郵便番号検索</Description>
    <Style/>
    <Property>
      <Uid>0c7eb1f26847948ccadd7997195ebaf87e08179e</Uid>
      <CassetteId>3ee7f7f5fe1ef2267e319b15168e37d3</CassetteId>
      <Country>
        <Code>JP</Code>
        <Name>日本</Name>
      </Country>
      <Address>東京都千代田区丸の内(大規模ビルを除く)</Address>
      <GovernmentCode>13101</GovernmentCode>
      <AddressMatchingLevel>6</AddressMatchingLevel>
      <PostalName>東京都千代田区丸の内(大規模ビルを除く)</PostalName>
      <Area>
        <Code>000024</Code>
        <Name>銀座・有楽町</Name>
      </Area>
      <Area>
        <Code>000030</Code>
        <Name>東京駅・丸の内</Name>
      </Area>
      <Station>
        <Id>22828</Id>
        <SubId>2282801</SubId>
        <Name>東京</Name>
        <Railway>JR在来線/東京メトロ丸ノ内線</Railway>
        <Exit>丸の内南口(地下鉄側)</Exit>
        <ExitId>4669</ExitId>
        <Distance/>
        <Time>0</Time>
        <Geometry>
          <Type>point</Type>
          <Coordinates>139.7653450,35.6806158</Coordinates>
        </Geometry>
      </Station>
      <Station>
        <Id>22828</Id>
        <SubId>2282803</SubId>
        <Name>東京</Name>
        <Railway>JR在来線</Railway>
        <Exit>丸の内中央口</Exit>
        <ExitId>4663</ExitId>
        <Distance/>
        <Time>2</Time>
        <Geometry>
          <Type>point</Type>
          <Coordinates>139.7660186,35.6815814</Coordinates>
        </Geometry>
      </Station>
      <Station>
        <Id>22883</Id>
        <SubId>2288301</SubId>
        <Name>二重橋前</Name>
        <Railway>東京メトロ千代田線</Railway>
        <Exit>4</Exit>
        <ExitId>4856</ExitId>
        <Distance/>
        <Time>4</Time>
        <Geometry>
          <Type>point</Type>
          <Coordinates>139.7622375,35.6807242</Coordinates>
        </Geometry>
      </Station>
    </Property>
  </Feature>
</YDF>


YOLPの他のAPIと組み合わせて利用する

郵便番号検索APIは、他のYOLP APIと組み合わせることでさらに用途が広がります。

例えばYahoo! JavaScriptマップAPIYahoo!ローカルサーチAPIを組み合わせると、指定した郵便番号のエリアの地図や周辺の地域・拠点情報を表示することができます。

宅配検索サービスを例に考えてみましょう。
「たまにはおいしい外食をしたい!」と思っても、雨が降っていて外出する気が起きない時、郵便番号でエリアを指定して、宅配可能なお店を検索したいと思いませんか?YOLP APIを利用して、その課題を解決してみましょう。

  • 郵便番号を指定して、該当する郵便番号の名称と住所、および地図を表示
  • 地図に雨雲情報を重ねて表示
  • 指定した郵便番号周辺の宅配可能と推定される店舗(4キロ以内の宅配業種)を検索し地図上に表示
  • ポップアップ内のYahoo!ロコへのリンクから、お店の詳細な情報を取得

※表示された店舗が必ずしも宅配可能であることを保障するものではありません。実際に宅配可能エリアかどうかは各店舗にお問い合わせください。

こちらの例では、検索結果に雨雲レーダーを重ねて表示していますので、これから雨が止むかどうかの見当をつけることもできます。

サンプルサイトはこちらになります。



サンプルコードはこちらになります。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>郵便番号検索</title>
<style type="text/css">
html, body {
    width:100%; height:100%;
}
html, body, div{
	margin:0; padding:0;
}
div#panel { 
	font-size:9pt;
	z-index:2;
	padding:8px;
	overflow:hidden;
	color: #fff;
	background-color: #000;
	background-image: -webkit-gradient(
		linear,
		0% 0%,
		0% 100%,
		from(rgba(155, 155, 155, 0.1)),
		to(rgba(255, 255, 255, 0.5)),
		color-stop(.5,rgba(155, 155, 155, 0.2)),
		color-stop(.5,rgba(255, 255, 255, 0.1))
	);
	border-radius: 8px;
	opacity: .7;
}
</style>
<script src="http://js.api.olp.yahooapis.jp/OpenLocalPlatform/V1/jsapi?appid=<あなたのアプリケーションID>"></script>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
var map;
window.onload = function() {
    // 地図表示
    map = new Y.Map('map', {
        configure : {
            scrollWheelZoom : true,
            weatherOverlay: true // 雨雲レーダーON
        }
    });
    map.drawMap(new Y.LatLng(35, 135), 14, Y.LayerSetId.NORMAL);
    // ズームコントロール追加
    map.addControl(new Y.ZoomControl(), new Y.ControlPosition(Y.ControlPosition.TOP_RIGHT));

    // 検索ボタン押下
    $("#search").click(function(e) {
        zipsearch();
    });
    $("#zip").keydown(function(e) {
        if (e.keyCode == 13) {
            zipsearch();
        }
    });

    // リサイズ(回転)の時に地図更新
    $(window).resize(function() {
        map.updateSize();
    });
};

// 郵便番号検索
function zipsearch() {
    // 吹き出しと表示中のアイコンをクリア
    map.closeInfoWindow();
    map.clearFeatures();
    // 郵便番号検索
    var url = "http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/zipCodeSearch";
    var param = {
        appid: "<あなたのアプリケーションID>",
        output: "json",
        query: $("#zip").val()
    };
    $.ajax({
        url: url,
        data: param,
        dataType: "jsonp",
        success: function(result) {
            var ydf = new Y.YDF(result);
            // 郵便番号をリスト表示
            dispZipList(ydf);
        },
        error: function() {
            // エラー時の処理
        }
    });
}

// 郵便番号をリスト表示
function dispZipList(ydf) {
    var zipList = $("#ziplist");
    zipList.empty();
    if (ydf.result.count > 0) {
        for (var i = 0; i < ydf.features.length; i ++) {
            // リスト作成
            var zip = $("<div></div>");
            zip.append(ydf.features[i].name + "<br/>");
            zip.append("住所:" + ydf.features[i].property.Address + "<br/>");
            zipList.append(zip);
        }
        // リストの 1 件目の緯度経度を取得
        var latlng = ydf.features[0].getLatLng();
        // 地図移動
        map.panTo(latlng);
        // 4km の円を描画
        var circle = new Y.Circle(latlng, 4, {
            unit: "km",
            strokeStyle: new Y.Style("", 0, 0), //線は無し
            fillStyle: new Y.Style( "ff00ff", 0, 0.2), //塗りつぶしは透過度 0.2 で赤色
        });
        circle.setClickable(false); // 円をクリックできないように設定
        map.addFeature(circle);
        // ローカルサーチで店舗を取得
        localsearch(latlng);
    }
}

// ローカルサーチ
function localsearch(latlng) {
    var cid = "d8a23e9e64a4c817227ab09858bc1330,132c700e0ebf5a1d386e9b725d7d1e6b"; //電話帳およびロコプレイスカセットを設定
    var options = {
        gc: "0114002,0114003",
        dist: 4,
        lat: latlng.lat(),
        lon: latlng.lng(),
        detail: "full"
    };
    var local = new Y.LocalSearch();
    local.search("", cid, options, function(ydf) {
        // 吹き出し作成
        for (var i = 0; i < ydf.features.length; i ++) {
            var html = "<a href='" + ydf.features[i].property.Detail.YUrl + "'>" + ydf.features[i].name + "</a><br/>" +
                "<div>" + ydf.features[i].property.Tel1 + "</div>";
            ydf.features[i].bindInfoWindow(html);
        }
        map.addFeatures(ydf.features);
    });
}
</script>
</head>
<body>
<div id="map" style="width:100%; height:100%;"></div>
<div id="panel" style="position:absolute; top:4px; left:4px;">
郵便番号:<input type="text" id="zip" /><input id="search" type="button" value="検索" />
<div id="ziplist"></div>
</div>
</body>
</html>
これらのサンプルコードは、githubでも公開しています。簡単にサンプルコードを利用できますので、githubもぜひご利用ください。
https://github.com/yahoojpYOLP/yolp-jsapi-samples(外部リンク)

まとめ

YOLPでは本日公開した郵便番号検索APIをはじめ、住所や地図に関するさまざまなAPI/SDKを提供することで、デベロッパー・ユーザーが便利に位置情報コンテンツを利用できるように頑張ります。
このほかにもYahoo!ローカルサーチAPIYahoo! iOSマップSDKYahoo! AndroidマップSDKなどのラインナップがありますので、こちらもぜひご活用ください。

今後ともYOLPをよろしくお願いいたします。


Yahoo! Open Local Platform(YOLP): http://olp.yahoo.co.jp/
YOLP@Facebook(外部リンク): http://www.facebook.com/yahoojpYOLP
YOLP@Twitter(外部リンク): http://twitter.com/yahoojpYOLP
YOLP@GitHub(外部リンク): https://github.com/yahoojpYOLP/
Yahoo!地図アプリ iPhone版/Android版(無料)
Yahoo!地図ブログ
本文はここまでです このページの先頭へ