��®�����Ƥߤ���

ricollab Web Tech Blog ? Blog Archive ? ricollab�¸������ӥ�����Ƥ򳫻Ϥ��ޤ�!
������ꡢricollab�θ츻�ΰ�ĤǤ���֥ꥳ����ܡפȤ��Ƥγ�ư������ơ�͹���ֹ渡�������ӥ��򳫻Ϥ��ޤ���
�� Ⱦ�ѿ���7����
����

͹���ֹ��7�����Ϥ���ȡ��б����뽻�꤬�����������ޤ������ΤޤޤǤ褱���submit�������Ǥʤ������Ĵ��(���Ȥ������Ϥ�����)����submit����ȡ��Ͽޤ��ڤ��ؤ��ޤ���

Google Map API�⡢jsapi �� geocoder ���б����Ƥ���ޤ���

����ʤΤ�30ʬ�ǽ����������ˤʤä�������餿�ޤ��

;�̤Ǥ�����Safari 3.1��Error Console�ǹ�! Firefox��ꤨ���盧�졣

HTML

<div style="border:outset 1px;padding:0.5em;">
<table><tbody>
<tr><th>��</th><td><input id="zip" type="text" size="7" onkeyup="
    if (this.value.length == 7){
        gmap.zip = this.value;
        zip2address.parse(this.value);
    }
"> Ⱦ�ѿ���7����</td></tr>
<tr><th>����</th><td><input id="address" type="text" size="40">
<input type="submit" onclick="gmap.gotoAddress(
    document.getElementById('address').value,
    document.getElementById('zip').value
)">
</td></tr>
<tr><th></th><td><div id="gmap" style="width:400px;height:400px"></div></td></tr>
</tbody></table>
</div>
<script type="text/javascript" src="http://www.google.com/jsapi?key=API_KEY"></script>

JavaScript

google.load('maps', '2');
var gmap = {};
gmap.gotoAddress = function(address, zip){
    this.geocoder.getLatLng(address, function(point) {
        if (!point) {
            alert(address + " not found");
        } else {
            gmap.point = point;
            gmap.map.setCenter(point, 15);
            var marker = new google.maps.Marker(point);
            gmap.map.addOverlay(marker);
            var html = address;
            if (zip) html = '��'+zip.replace(/(\d\d\d)/, '$1-')+'<br>'+html;
            html += '<br>' + '����:' + point.y + ' ����:' + point.x;
            google.maps.Event.addListener(marker, "click", function() {
                marker.openInfoWindowHtml(html);
             });
            marker.openInfoWindowHtml(html);
        }
    });
};
google.setOnLoadCallback(function(){
    gmap.map = new google.maps.Map2(document.getElementById('gmap'));
    gmap.map.addControl(new GSmallMapControl());
    gmap.map.addControl(new GMapTypeControl());

    gmap.geocoder = new google.maps.ClientGeocoder();
});
window.onunload=function(ev){  GUnload() }

var zip2address = (function(callback){
  this.proxy     = 'http://zip.ricollab.jp/';
  this.callback  = callback || 'jsonp';
  this.parse = function(zip){
    var script = document.createElement('script'); 
    script.id = this.proxy + '/' + zip + '.json?callback=' + this.callback;
    script.charset = 'UTF-8';
    script.src = script.id; 
    document.lastChild.appendChild(script);
  };
  return this;
})();

function jsonp(json){
    var addr = json.address;
    document.getElementById('address').value = 
        addr ? addr.prefecture + addr.city + addr.town : json.description;
};

Enjoy!

Dan the Musher-up