OSDN Git Service

cleanup comment
[keitairc/keitairc.git] / lib / public / geopost-keitairc.js
1 /*
2  -*- mode: javascript; coding: utf-8 -*-
3  $Id: geopost-keitairc.js,v 1.5 2010-01-25 15:16:24 ishikawa Exp $
4
5  Copyright (c) 2009 ISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
6  This program is covered by the GNU General Public License 2
7 */
8
9 /*
10 keitairc_post_url: 発言POST先のURL
11 keitairc_stamp: 発言のタイムスタンプ
12 keitairc_channel: チャネル名
13
14 をあらかじめ外部でセットしておく必要があります。
15
16 上記はkeitairc都合で表示メッセージを組み立てるのに必要
17 (msg を組み立ててるところだけに使われてる)なだけで、それ以外は
18 だいぶ generic に作ってある(keitairc 都合な部分はそこのみ)なつもり。
19
20 現在位置を測位して <div id="map_canvas"></div> にその位置が中心に
21 なった google map が表示されます。
22
23 google map api 使ってるので <head> とかで
24
25 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
26
27 も必要です。
28 */
29
30 addEventListener("load", function(event) {
31         navigator.geolocation.getCurrentPosition(function (position) {
32                 var latLng = new google.maps.LatLng(position.coords.latitude,
33                                                 position.coords.longitude);
34
35                 var map = new google.maps.Map(document.getElementById("map_canvas"),
36                                               {zoom: 15,
37                                                mapTypeId: google.maps.MapTypeId.ROADMAP,
38                                                center: latLng});
39
40                 var marker = new google.maps.Marker({map: map,
41                                                      position: latLng});
42
43                 var geocoder = new google.maps.Geocoder();
44                 geocoder.geocode({'latLng': latLng}, function(results, status) {
45                         if (status == google.maps.GeocoderStatus.OK) {
46                                 var Address = '現在の地名が分かりません: 北緯 = ' + position.coords.latitude + ', 東経 = ' + position.coords.longitude;
47                                 for(var i = 1; i < results.length; i++){
48                                         if (results[i].types.length >= 2 && results[i].types[1] == "political") {
49                                                 Address = results[i].formatted_address.replace(/^日本/, '');
50                                                 break;
51                                         }
52                                 }
53
54                                 var msg;
55                                 msg = '<span style="font-size:80%">';
56                                 msg += '<strong>現在の場所:</strong><br />';
57                                 msg += Address;
58                                 msg += '</span><hr />';
59                                 msg += '<form action="'+keitairc_post_url+'" method="post">';
60                                 msg += '<input type="hidden" name="m" value="現在位置: L:'+ Address + '" />';
61                                 msg += '<input type="hidden" name="stamp" value="'+keitairc_stamp+'" />';
62                                 msg += '<button type="submit" href="#">'+keitairc_channel+'へ発言</button>';
63                                 msg += '</form>';
64                                 var info = new google.maps.InfoWindow({content: msg});
65                                 info.open(map, marker);
66                         } else {
67                                 alert("地名の変換に失敗しました: エラーコード = " + status);
68                         }
69                 });
70         });
71 }, true)
72