SUSH-i LOG

名古屋のWeb制作会社につとめるプログラマーのつぶやき

Google Map API V3を試してみた

Google Map API V3を試してみた

一年以上前に公開されていたらしいのですが、今更ながらGoogleMap APIのV3の存在を知ったので試してみました。

V3での主な変更点

V2からV3へとバージョンアップに伴い、以下のような変更・改善点があります。

API Keyが不要になった
URL毎に発行していたAPI Keyが不要となりました。開発者側にとっては結構うれしいことです。
スマートフォンへの対応がなされた
携帯端末用に表示速度が改善され、またGPS機能との連動が可能となりました。
JavaScriptの記述方法が変更された
V2に比べてJavaScriptの記述方法に変更があったようです。

テストコード

まずHTML側に地図を表示させるdiv要素を配置します。

<div id="gmap"></div>

地図を表示させる基本のコードは以下のとおりです。

google.maps.event.addDomListener(window, 'load', function() {
	var mapdiv = document.getElementById('gmap');
	var initPosition = {
		zoom: 14,
		center: new google.maps.LatLng(35.17073004594335, 136.9),
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scaleControl: true,
	};
	var map = new google.maps.Map(mapdiv, initPosition);
});

マーカーを表示させるには以下のコードを追加します。

var marker = new google.maps.Marker({
	position: new google.maps.LatLng(35.17073004594335, 136.8816876411438),
	map: map,
	title: '名古屋駅'
});

情報ウィンドウを表示するのはこちらのコードです。

var infoWindow = new google.maps.InfoWindow({
	content: '名古屋駅'
});
infoWindow.open(map, marker);

また、V3より複数の情報ウィンドウを表示させることが可能になり、こちらのデモページの様な表現も出来るようになりました。

デモページで使っているJavaScriptのコードは以下のとおりです。

google.maps.event.addDomListener(window, 'load', function() {
    var mapdiv = document.getElementById('gmap');
    var initPosition = {
        zoom: 14,
        center: new google.maps.LatLng(35.17073004594335, 136.9),
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scaleControl: true,
    };
    var map = new google.maps.Map(mapdiv, initPosition);

    var marker = new Array();
    var infoWindow = new Array();

    marker.push( new google.maps.Marker({
        position: new google.maps.LatLng(35.17073004594335, 136.8816876411438),
        map: map,
        title: '名古屋駅'
    }) );
    infoWindow.push( new google.maps.InfoWindow({
        content: '名古屋駅'
    }) );

    marker.push( new google.maps.Marker({
        position: new google.maps.LatLng(35.170798014746985, 136.92037045955658),
        map: map,
        title: '新栄町'
    }) );
    infoWindow.push( new google.maps.InfoWindow({
        content: '新栄町'
    }) );

    for(var i=0; i<marker.length; i++) {
        infoWindow[i].open(map, marker[i]);
    }
});