2 -*- mode: javascript; coding: utf-8 -*-
3 $Id: geopost-keitairc.js,v 1.5 2010-01-25 15:16:24 ishikawa Exp $
5 Copyright (c) 2009 ISHIKAWA Mutsumi <ishikawa@hanzubon.jp>
6 This program is covered by the GNU General Public License 2
10 keitairc_post_url: 発言POST先のURL
11 keitairc_stamp: 発言のタイムスタンプ
12 keitairc_channel: チャネル名
14 をあらかじめ外部でセットしておく必要があります。
16 上記はkeitairc都合で表示メッセージを組み立てるのに必要
17 (msg を組み立ててるところだけに使われてる)なだけで、それ以外は
18 だいぶ generic に作ってある(keitairc 都合な部分はそこのみ)なつもり。
20 現在位置を測位して <div id="map_canvas"></div> にその位置が中心に
21 なった google map が表示されます。
23 google map api 使ってるので <head> とかで
25 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
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);
35 var map = new google.maps.Map(document.getElementById("map_canvas"),
37 mapTypeId: google.maps.MapTypeId.ROADMAP,
40 var marker = new google.maps.Marker({map: map,
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(/^日本/, '');
55 msg = '<span style="font-size:80%">';
56 msg += '<strong>現在の場所:</strong><br />';
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>';
64 var info = new google.maps.InfoWindow({content: msg});
65 info.open(map, marker);
67 alert("地名の変換に失敗しました: エラーコード = " + status);