-
Notifications
You must be signed in to change notification settings - Fork 5
/
geolocation-api-map.html
103 lines (100 loc) · 2.74 KB
/
geolocation-api-map.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>Geolocation API Sample</title>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map {
width : 100%;
height : 300px;
}
</style>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/base/jquery-ui.css">
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("jquery","1.4.2");
google.load("jqueryui", "1.8.2");
google.load("maps","3", {"other_params":"sensor=true"});
</script>
<script type="text/javascript">
$(function(){
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(35.68,139.76),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map"),myOptions);
// geolocationオブジェクトを生成
var geolocation;
try {
if(typeof(navigator.geolocation) == 'undefined'){
geolocation = google.gears.factory.create('beta.geolocation');
} else {
geolocation = navigator.geolocation;
}
} catch(e) {}
if (!geolocation) {
alert('位置情報は利用できません');
return;
}
var watchId;
// 位置情報取得に成功したとき呼ばれるcallback関数
var success = function (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
var latlng = new google.maps.LatLng(lat, lon);
map.setCenter(latlng);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
google.maps.event.addListener(marker, 'click', function() {
map.setZoom(8);
});
}
// 位置情報取得に失敗したとき呼ばれるcallback関数
var error = function (error) {
var result = $('<tr>' +
'<td>' + error.code + '</td>' +
'<td>' + error.message + '</td>' +
'</tr>');
$('#errorresult').append(result);
}
// 位置情報取得時に設定するオプション
var option = {
enableHighAccuracy: true,
timeout : 10000,
maximumAge: 0
};
// 位置情報取得を開始する関数
function start() {
watchId = geolocation.watchPosition(success, error, option);
$('#controler').attr('value','stop');
}
// 位置情報取得を停止する関数
function stop() {
geolocation.clearWatch(watchId);
$('#controler').attr('value','start');
}
// ボタンに開始/停止関数を紐付け
$('#controler').toggle(start, stop);
});
</script>
</head>
<body>
<form><input type="button" value="start" id="controler"></form>
<h2>取得成功</h2>
<div id="map"></div>
<h2>取得失敗</h2>
<table id="errorresult">
<tbody>
<tr>
<th>code</th>
<th>message</th>
</tr>
</tbody>
</table>
</body>
</html>