56
GoogleMap モジュの紹介 2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

20120516 NetCommons GoogleMap

  • View
    7.301

  • Download
    2

Embed Size (px)

DESCRIPTION

GoogleMap モジュールの紹介 2012年5月16日 NetCommons アドオン・モジュール・セミナー @ 九段下 イタリア文化会館

Citation preview

Page 1: 20120516 NetCommons GoogleMap

GoogleMap  モジュールの紹介

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

Page 2: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

@ohwada

大和田 健一横浜市戸塚区 在住ITコンサルタント NetCommons XOOPS / WordPress / Android

自 己 紹 介

Page 3: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

XOOPS2011年4月  2.2 リリース

2012年4月 リンク集モジュール  ロシア語版

Page 4: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

WordPress2012年4月 3.3.2 リリース

ワードプレス勉強会 @ 横浜・関内

Page 5: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

Android2012年4月 SDK r19 リリース

日本Androidの会 横浜支部

Page 6: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

Android によるロボット制御

Page 7: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

NetCommons

Page 8: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

構築運営支援 無償 レンタルサーバー

ネットコモンズインストール済

(協力:東京都市大学 )

YN150プロジェクト

http://yn150.jp/

Page 9: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

1.Google Map 2.Twitter / Facebook3.ヘッダ・チェンジャー 4.Facebook風掲示板

開発したモジュール

http://ohwada.yn150.jp/

Page 10: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

Google Map

Page 11: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

1.標準のログインの代わりに  Twitter (Facebook) で  ログイン出来ます2.ログインユーザの   Twitter (Facebook) の  タイムラインを表示する

Twitter / Facebook

http://ohwada.yn150.jp/

Page 12: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

ヘッダ・チェンジャー標準ヘッダカラム、左カラム、右カラム (青色)全てのページで共通

ヘッダカラム(桃色)左カラム(緑色)右カラム(黄色)ページ毎に異なるものに

Page 13: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

Facebook風掲示板汎用データベース・モジュールをカスタマイズ

Page 14: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

NetCommons モジュール開発

Page 15: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

必要な知識

1.HTML + CSS2.PHP / Smarty3.MySQL 4.JavaScript / prototype.js

Page 16: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

3つのポイント

Maple ベース 1. DIコンテナ 2. フィルタチェイン 3. GUI / WYSIWYG

http://ohwada.yn150.jp/explain/di-container/

Page 17: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

DIコンテナDependency Injection

依存性の注入

http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.htmlJava Spring

Page 18: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

フィルタチェイン

http://ethna.jp/ethna-document-dev_guide-app-filterchain.html

PHP Ethna

Page 19: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

GUI / WYSIWYGWhat You See Is What You Get

見たままが得られる=> JavaScript で実現

Page 20: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

NetCommons GoogleMapモジュール

Page 21: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

お知らせ

新バージョン リリース1. GoogleMaps API V3 対応 API Key 不要2. 住所検索 追加

http://ohwada.yn150.jp/googlemap/

Page 22: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

マニュアル http://bit.ly/ITuwAz

Page 23: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

モジュール開発

http://www.netcommons.org/mudl5vlri-167/#_167

ブログパーツ モジュール公式サイト 拡張モジュール機能がシンプル初心者にお勧め

ベースは

Page 24: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

API : JavaScript<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js"></script><script type="text/javascript">function initialize() { var myOptions = { center: new google.maps.LatLng(-34.397, 150.644), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map( document.getElementById("map_canvas"), myOptions );}</script><body onload="initialize()">

https://developers.google.com/maps/documentation/javascript/

Page 25: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

理由 NetCommons の GUI と衝突

実装上の工夫

実装の例 1. 地図を表示する 2. 参照で地図を表示する 3. 地図の緯度経度を選択する

Page 26: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

1. 地図を表示する

Page 27: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

地図を表示する

function googlemap_load<{$id}>() { var latlng = new google.maps.LatLng( parseFloat(<{$action.parts_data.parts_latitude}>), parseFloat(<{$action.parts_data.parts_longitude}>) ); var zoom = Math.floor( <{$action.parts_data.parts_zoom}> ); var ele = document.getElementById( "googlemap_canvas<{$id}>" ); var map_options = { zoom: zoom, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; … 中略}

googlemap_view_main_init.html

API そのまま

Page 28: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

<{if $action.load_script}> <script src="http://maps.google.com/maps/api/js" type="text/javascript" charset="utf-8"> </script><{/if}><script type="text/javascript">function googlemap_load<{$id}>() { … 中略}setTimeout( 'googlemap_load<{$id}>()' , 1000):</script>

地図を表示するgooglemap_view_main_init.html

複数表示する

Page 29: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

地図を表示する複数表示する

チュートリアル <body onload="initialize()"> 

同等 window.onload =initialize; 

複数表示 setTimeout( "initialize_1()” , 1000): setTimeout( ”initialize_2()” , 1000):

Page 30: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

2. 参照で地図を表示する

Page 31: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

「参照」の仕組み

「参照」ボタンを押すと1. referGooglemap (JavaScript) 2. popup 形式で3. googlemap_view_edit_preview 実行

参照で地図を表示する

Page 32: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

参照で地図を表示するgooglemap_view_edit_preview.html

課題 API を記述しても表示しない。対応 iframe にて、 googlemap_view_main_preview  を呼出す

Page 33: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

参照で地図を表示するgooglemap_view_main_preview.html

html フル記述

<html><head><script src="http://maps.google.com/maps/api/js?sensor=false"  type="text/javascript" charset="utf-8"></script></head><body><script type="text/javascript">function googlemap_preview_load<{$id}>() { 省略 ...}</script></body></html>

Page 34: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

参照で地図を表示する

←iframe

Page 35: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

3. 地図の緯度経度を選択する

Page 36: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

GoogleMaps API で動作を記述したJavaScript 900行

地図の緯度経度を選択する

googlemap.jp

Page 37: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

地図の緯度経度を選択する

対応 (トリッキー) files/default/images/ 配下   htdocs 領域のコピー  URLとして指定できる

配置場所の課題 files/default/js/ 配下  DBに格納される

Page 38: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

googlemap_view_edit_entry.html

地図の緯度経度を選択する

課題 API を記述しても表示しない対応 (参照と同じ) iframe にて、 googlemap_view_main_preview  を呼出す

Page 39: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

googlemap_view_main_location.html

html フル記述

地図の緯度経度を選択する<html><head><script src="http://maps.google.com/maps/api/js"  type="text/javascript" charset="utf-8"></script><script src="<{$smarty.const.CORE_BASE_URL}> /images/googlemap/googlemap_location.js"  type="text/javascript"></script></head><body><script type="text/javascript">function googlemap_load_get_location() { 省略 ...}</script></body></html>

URL指定

Page 40: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

NetCommons デバックノウハウ

Page 41: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

デバックノウハウ

描画→ボタン

通常の画面遷移URL1 URL2

GET/POST

Page 42: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

デバックノウハウ

部分的再描画ボタン

NetCommonsの画面遷移URL1 URL1 (変わらず)

JavaScript

→ →

GET/POST

Page 43: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

デバックノウハウ

部分的再描画ボタン

URL1 URL1 (変わらず)

JavaScript

→ →

GET/POST

遷移後の画面が表示できないだろうか?

Page 44: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

index.php?action=login_view_main_init

デバックノウハウ

ログイン画面表示

Page 45: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

index.php?action=googlemap_view_main_init

デバックノウハウログイン画面表示

何も表示しない

Smarty error: unable to read resource:

"block.html"

Page 46: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

index.php?action=login_view_main_init

if ($action_name == "login_view_main_init" && $block_id == 0)

webapp/components/common/Main.class.php

特別扱い

デバックノウハウ

Page 47: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

デバックノウハウindex.php?action=googlelmap_view_main_init

&_header=0

地図が選択されてません

地図が選択すれば

Page 48: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

デバックノウハウindex.php?action=googlemap_view_main_init

&_header=0&block_id=56

http://ohwada.yn150.jp/index.php?action=googlemap_view_main_init&_header=0&block_id=56

Page 49: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

GoogleMapAPI

Page 50: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

1. より部品化が進んだ バルーン (吹き出し) V2: マーカーの1つの機能 V3: 独立した機能 イベントで結びつける

API V2 -> V3

2. 無くなった機能 マーカーをまとめて消す

Page 51: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

初期のころは、期待した結果が得られなかった。今は、ほぼ期待とおり。

API 住所検索

こういうサービスは、公共機関がやって欲しいな。

http://newspat.csis.u-tokyo.ac.jp/geocode/modules/geocode/index.php?content_id=1

東京大学 ジオコーディング実験

Page 52: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

1. 回数制限が厳しくなった 以前は、実質 制限なし 最近は、人気サイトでは制限に該当

API 利用許諾

Page 53: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

GoogleMap 離れFoursquare / Apple / Wikipedia

OpenStreetMap への移行

2012年3月米foursquareGoogle Mapsから“地図版Wikipedia”に移行

http://internet.watch.impress.co.jp/docs/news/20120302_516130.html

Page 54: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

OpenStreetMap自由な地図を作るプロジェクト

Page 55: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

OpenStreetMap6月24日 横浜 勉強会

http://connpass.com/event/499/?disp_content=presentation

http://internet.watch.impress.co.jp/docs/column/chizu/20120419_527533.html

4月15日「OpenStreetMap」を作る人の会合で地図編集の心得を学んできた

Page 56: 20120516 NetCommons GoogleMap

2012年5月16日 NetCommonsアドオンモジュールセミナー大和田健一

質疑応答