Geolocation APIを利用する (4/4)
作成:2011-10-17 09:41
更新:2011-10-17 09:41
更新:2011-10-17 09:41
■Googleマップと連携する
GPSが使える!となれば、誰もがまず思い浮かぶのは「Googleマップとの連携」でしょう。では、実際にGPSから現在位置を取得し、Googleマップに表示するサンプルを挙げておきましょう。
ここでは、ざっと全体の流れを説明しておきます。まず、ページにアクセスしたら、doActionでGPSアクセスを開始します。そして、成功時のコールバック関数getPosition内で、緯度と経度の値を取り出したら、それらを引数に指定してinitMap関数を呼び出します。
このinitMapで、マップの作成と設定を行なっています。まず、位置の値を元にLatLngオブジェクトを作成します。
※GoogleマップのAPIについては、以下に説明してありますのでこちらを参照ください。
http://libro.tuyano.com/index3?id=84001
ここでは、ざっと全体の流れを説明しておきます。まず、ページにアクセスしたら、doActionでGPSアクセスを開始します。そして、成功時のコールバック関数getPosition内で、緯度と経度の値を取り出したら、それらを引数に指定してinitMap関数を呼び出します。
このinitMapで、マップの作成と設定を行なっています。まず、位置の値を元にLatLngオブジェクトを作成します。
var latlng = new google.maps.LatLng(lat,lng);続いて、マップの作成です。あらかじめ表示設定を連想配列としてまとめておき、それを元にしてgoogle.maps.Mapオブジェクトを作成します。
var options = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(element,options);
続いて、現在地点にマーカーを作成します。これも、あらかじめ表示に関する設定情報を連想配列にまとめておき、google.maps.Markerオブジェクトを作成します。var options = {
position: latlng,
map: map,
title: "現在位置"
};
var marker = new google.maps.Marker(options);そして、情報ウインドウの作成と表示です。やはり表示メッセージなどの情報を連想配列にまとめ、google.maps.InfoWindowを作成します。そして、openを呼び出してウインドウを画面に表示させておきます。var info_opt = { content: "現在位置!" };
var info = new google.maps.InfoWindow(info_opt);
info.open(map,marker);ざっと「マップ」「マーカー」「情報ウインドウ」の3大要素を作成してみました。watchPositionを使えば、移動中に現在地点をマーカーでどんどんマップに追加する、というようなサンプルも作れそうですね。いろいろと応用ができそうです。※GoogleマップのAPIについては、以下に説明してありますのでこちらを参照ください。
http://libro.tuyano.com/index3?id=84001
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
<title>Test</title>
<style>
body { padding:5px; }
h1 { font-size:18pt; background-color:#EEEEFF; }
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true&language=ja"></script>
<script type="text/javascript">
<!--
var counter = 0;
var gps_id = 0;
function doAction(){
var opt = {
enableHighAccuracy:true,
timeout: 3000
};
navigator.geolocation.getCurrentPosition(getPosition,error,opt);
}
function getPosition(p){
var lat = p.coords.latitude;
var lng = p.coords.longitude;
initMap(lat,lng);
}
function error(err){
alert("ERROR(" + err.code + ")\n" + err.message);
}
function initMap(lat,lng){
var element = document.getElementById("map");
var latlng = new google.maps.LatLng(lat,lng);
// マップ作成
var options = {
zoom: 12,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(element,options);
// マーカー作成
var options = {
position: latlng,
map: map,
title: "現在位置"
};
var marker = new google.maps.Marker(options);
var info_opt = { content: "現在位置!" };
var info = new google.maps.InfoWindow(info_opt);
info.open(map,marker);
}
// -->
</script>
</head>
<body onload="doAction();">
<h1>GPS Sample</h1>
<div id="map" style="width:400px; height:400px;"></div>
</body>
</html>
※関連コンテンツ
「JavaScriptによるHTML5プログラミング入門」に戻る