情報整理のための Google Map API入門

Slides:



Advertisements
Similar presentations
Integrated Personal Page C05823 森本万里子 C05829 西山礼恵 C05899 高木華子.
Advertisements

情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
画像展示サイト“Fragments” 『閲覧しやすさ』と『デザイン性』を両立させた Webデザイン
JavaScript プログラミング入門 2006/11/10 神津.
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報処理演習C2 ファイル操作について (2).
JavaScriptゼミ第2回 2-2 変数とリテラル 発表者 直江宗紀.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ウェブページ制作の基礎 タグの直接入力によるウェブページの制作 次のスライドへ進んだり,戻ったりしたい時は,右下のボタンをクリック。 次へ.
Applet 岡部 祐典 鈴木 敬幸.
HTMLの記述と WWWにおける情報公開 遠藤
オペレーティングシステムⅡ 第5回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/11/6.
HTML版パスファインダーの作成 CSSの利用 hp. infoseek. co. jp/cje10
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
東広島市市民活動情報サイトの 利便性向上 ~第2回進捗報告会~
地理情報システム論 第3回 コンピュータシステムおける データ表現(1)
東広島市市民活動情報サイトの 利便性向上 ~第3回進捗報告会~
第1回 JavaScriptゼミ ・ scriptエレメント ・ 記述における諸注意 ・ 古いブラウザへの対応方法
オペレーティングシステムⅡ 第3回 講師 松本 章代 VirtuaWin・・・仮想デスクトップソフト 2009/10/16.
見た目を定義する技術 CSS(スタイルシート).
条件式 (Conditional Expressions)
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
JSFによるWebアプリケーション開発 第6回
HTTPプロトコル J2EE I 第7回 /
情報基礎 空間情報の利用 講義の資料は下記のURLを参照.
情報学部 プログラミング体験教室 (初級編)
スタイルシート C306 情報発信の基礎【第6回】.
スクリプト言語を用いたPHITSの連続実行
Googleツールを用いた新しいWebシステムの開発
データベース設計 第9回 Webインタフェースの作成(1)
基礎プログラミング演習 第1回.
実際にたたいてAPI APIの初歩からプログラムまで使用方法のAtoZ.
第3章 第2節 ネットワークを活用した 情報の収集・発信(3) 5 表現方法の工夫
基礎プログラミング演習 第10回.
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
第4回JavaScriptゼミ セクション2-8 発表者 直江 宗紀.
ガジェット・マスターへの まわり道!? ~Ajaxを理解しよう~
図書館職員のための アプリケーション開発講習会
暗黙的に型付けされる構造体の Java言語への導入
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第2回 ファイル処理 情報・知能工学系 山本一公
移動経路表示システム Plot Map ~描いた線を思い出に~ 小路 大祐 坂内 佑介 藤井 貴大.
第7回JavaScriptゼミ セクション4-5 発表者 直江 宗紀.
基礎プログラミング演習 第5回 関数とイベントを使ったプログラム.
Javaによる Webアプリケーション入門 第2回
2016年度 植物バイオサイエンス情報処理演習 第6回 情報処理(4) データを加工する・2
コンピュータ プレゼンテーション.
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
基礎プログラミング演習 第12回.
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
コンピュータ プレゼンテーション.
C言語 はじめに 2016年 吉田研究室.
統計ソフトウエアRの基礎.
基礎プログラミング演習 第6回.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
基礎プログラミング演習 第3回.
地域生活支援システムの開発 越田研究室 j0431 野津洋二.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
ウェブデザイン演習 第6回.
JSPの基本 J2EE I (データベース論) 第8回 /
Googleマップを活用した 生物調査データベースの構築
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
コンパイラ 2012年10月11日
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
PROGRAMMING IN HASKELL
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
情報処理Ⅱ 2005年11月25日(金).
プログラミング基礎a 第3回 C言語によるプログラミング入門 データ入力
情報基礎 空間情報の利用 講義の資料は下記のURLを参照.
Presentation transcript:

情報整理のための Google Map API入門 日紫喜 光良 プロジェクトI/II 2016.9.23

今日の目標 Google Map APIを用いて、Google Mapの地図上にマーカーを表示する JSON形式によるデータの表現方法を学ぶ HTML Webページの構造を宣言する。 地図を表示する場所を宣言する。 Javascriptプログラミング Webページの地図表示箇所上に、地図を描く。 マーカーオブジェクトを生成して、地図上に置く。 複数のマーカーの位置データをJSON形式のテキストファイルから読み込む。 地図上に、複数のマーカーオブジェクトを置く。 マーカーに吹き出し(インフォウィンドウ)をつける。 JSON形式によるデータの表現方法を学ぶ Key-value pair(“項目名”:”その値”)の集合 データ収集から表示形式までの効率的な方法を考える。 住所から緯度と経度を得る 衛星写真上で位置を微調整する JSON形式へのデータ変換

必要なもの ブラウザ(Firefoxを推奨) テキストエディタ(秀丸, mi等) PC上のJSONファイルをブラウザ上で動くJavascriptプログラムに読み込ませるので、Firefoxを推奨する。Chromeではこれができない。 Developer toolを使うと、デバッグに便利 テキストエディタ(秀丸, mi等)

注意 次以降のスライドでのサンプルコードをそのままコピペすると、全角文字(具体的には引用符)のためにエラーになる場合があります。 それに注意してコピペしてください。

HTMLでWebページの構造を作る <!DOCTYPE html> <meta charset="UTF-8" /> <head> <script> </script> 次のスライドへ <script> </script> <style> #map {width: 500px; height: 380px; border: 1px solid #666; float: left;} </style> </head> <body> <div id="map"></div> </body> </html>

Javascriptで地図を表示する(1) <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script> <script> 次のスライド </script> <style> #map {width: 500px; height: 380px; border: 1px solid #666; float: left;} </style> </head>

Javascriptで地図を表示する(2) var c_lat, c_lng; var map; c_lat = 35.1814; c_lng = 136.9064; window.onload = function(){ draw_map(c_lat, c_lng); } function draw_map(lat,lng){   var op = {       zoom:13,      center:new google.maps.LatLng(lat,lng),      mapTypeId:google.maps.MapTypeId.ROADMAP   };   map = new google.maps.Map(document.getElementById("map"),op); }

地図の上にマーカーを置く(1) var marker; t_lat = 35.1584; t_lng = 136.9217; <script type="text/javascript“ src="http://maps.google.com/maps/api/js?sensor=false&language=ja"></script> <script> var c_lat, c_lng, t_lat, t_lng; var map; var marker; c_lat = 35.1814; c_lng = 136.9064; t_lat = 35.1584; t_lng = 136.9217; window.onload = function(){ draw_map(c_lat, c_lng); placeMarker(map, t_lat, t_lng); } function draw_map(lat,lng){ … } function placeMarker(map, lat, lng){ … } <script>

地図の上にマーカーを置く(2) function placeMarker(map, lat, lng){   var latLng = new google.maps.LatLng(lat, lng);   var label = "Nagoya University Hospital";   marker = new google.maps.Marker({ position:latLng,map:map,title:label }); }

マーカーのその他のプロパティの例 icon 1.マーカーアイコンを変更するために用いる URL(または相対パス)を指定すれば、画像がそのまま出る。 google.maps.Icon()を用いると、マーカーのサイズや伸縮性を指定できる。 2.マーカーアイコンの種類を変更するためにさらにiconのプロパティを用いる 例えば、path:google.maps.SymbolPath.CIRCLE, scale:数式で、マーカーの数値に応じた直径の円盤を表示できる。

Javascriptを構成するもの JSON形式が踏襲 オブジェクト(object) 変数(variable) 演算子(operator) プロパティ(property)をもつ。 ”プロパティ”:”値”をコンマ(,)で結合 変数(variable) 変数のスコープ(scope) 演算子(operator) 例:代入(assignment)記号(=)、等号(==) 式(expression) 文(statement) 最後にセミコロン 制御フローを表現するために、if (条件式) {…} else {…} 関数(function) 引数(argument)、返り値(return value) 定義するには function function_name(argments){statements} 呼び出すには function_name(arguments); 無名関数 function(){ … } JSON形式が踏襲

Javascriptプログラムを書くために 必要な定数、変数を先に定義しておく。 window.onloadプロパティに、Webページを表示し終わった後の動作を記述する。 動作の記述には、関数を用いる。 プログラムを関数に分けて書くと、読みやすい。 変数は、varをつけて定義すれば、スコープは関数の中だけ。つけなければ、プログラム全体。

まとめ:Google Map APIを使うには(1) まずHTMLでページの構造を作る。 とくに、地図を載せる<div>要素のid属性と、スタイルの定義が必要。 <head>要素の中の<script>要素に、地図を描くためのJavascriptプログラムを書く。 別の<script>要素に、Google Maps APIのプログラム本体(ライブラリ)が置いてある場所のURLを書く必要がある。 まず地図を描く。その上にマーカーを置く。 地図は、google.maps.Mapで描く。 google.maps.Mapは地図を乗せる要素とオプションを要求する。 要素はdocument.getElementById(要素名)で与える。 オプションには、最低限zoom, center, mapTypeIdを。 マーカーはgoogle.maps.Markerで作る。 position: google.maps.LatLng(緯度,経度)で定義されるオブジェクト map: 地図オブジェクト title: 文字列

マーカー情報をJSONで表現 UTF-8形式で保存 ]} JSON: Javascript Object Notation {“hospital”:[ {“name”:”Nagoya University Hospital”, ”lat”:35.1584, ”lng”:136.9217}, {“name”:”Chukyo Hospital”, ”lat”:35.1100, “lng”:136.9020}, {“name”:”Nagoyadaiichi Red Cross Hospital”, ”lat”:35.1718, ”lng”:136.8624} ]} UTF-8形式で保存 hosp.json ひとつのオブジェクトは {“プロパティ1”:”値1”,”プロパティ2”:”値2”,…,”プロパティN”:”値N”} オブジェクトの配列は、 [オブジェクト1, オブジェクト2, … , オブジェクトM]

JSON形式のファイルを読み込む <script> var hosp_data; <script type="text/javascript“ src="http://maps.google.com/maps/api/js?sensor=false&language=ja"> </script> <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js'> </script> <script> var c_lat, c_lng, t_lat, t_lng; ... ;t_lng = 136.9217; var hosp_data; $.getJSON(“hosp.json", function(data){ hosp_data = data; }); window.onload = function(){ draw_map(c_lat, c_lng); plot_sites(hosp_data); } function draw_map(lat,lng){ … } function plot_sites(data){ … } 次スライドへ <script>

複数のマーカーを表示する for (var i=0; i < len; i=(i+1)){ function plot_sites(data){ var len = data.hospital.length; for (var i=0; i < len; i=(i+1)){ var site = data.hospital[i]; var lat = site.lat; var lng = site.lng; var name = site.name; var pos = new google.maps.LatLng(lat,lng); var marker_prop = {position:pos, map:map, title:name}; var marker = new google.maps.Marker(marker_prop); }

JSONの目的 オブジェクトについての情報の転送 例: Webサーバ オブジェクトについての情報の転送 例: Webサーバとブラウザ コンピュータ間 {"x":200,"y":400} ブラウザ データベースサーバ Webサーバ {"id":"123456","name":"pochi", "species":"dog"}

JSONの特徴(1) 値の型はさまざまなものが可能 テキストで書かれている 1つのオブジェクトは{}で囲まれている 人が読める 1つのオブジェクトは{}で囲まれている 1つのオブジェクトは、プロパティと値のペアを1つ以上含む。 複数のペアはコンマ(,)で並べる 値の型はさまざまなものが可能 文字列、数値、配列、オブジェクト プロパティも値もダブルクォーテーション(")で囲む。 ここが、単なるJavascriptのオブジェクトの表現と異なる。 値が数値のときは、ダブルクォーテーションで囲まない 値が配列やオブジェクトのときなども、囲まない。

JSON形式で構造をもつデータを表現できる { "pets":[ {"id":“01","name":"pochi", "species":"dog", "favorites":{"food":"meat","place":"garden"}}, {"id":“02","name":"tama", "species":"cat", "favorites":{"food":"tuna","place":"kitchen"}}, ] }

マーカーに吹き出しをつける ]} {“hospital”:[ {“name”:”Nagoya University Hospital”, ”lat”:35.1584, ”lng”:136.9217, ”ward”:”Showa”, ”url”:” http://www.med.nagoya-u.ac.jp/hospital/”}, {“name”:”Chukyo Hospital”, ”lat”:35.1100, “lng”:136.9020, “ward”:”Minami”, “url”:”http://chukyo.jcho.go.jp”}, {“name”:”Nagoyadaiichi Red Cross Hospital”, ”lat”:35.1718, ”lng”:136.8624, “ward”:”Nakamura”, ”url”:”http://www.nagoya-1st.jrc.or.jp/”} ]}

マーカーに対して吹き出しを付ける for (var i=0; i < len; i=(i+1)){ function plot_sites(data){ var len = data.hospital.length; for (var i=0; i < len; i=(i+1)){ var site = data.hospital[i]; var lat = site.lat; var lng = site.lng; var name = site.name; var url = site.url; var pos = new google.maps.LatLng(lat,lng); var marker_prop = {position:pos, map:map, title:name}; var marker = new google.maps.Marker(marker_prop); marker = add_InfoWindow(marker,url); }

吹き出しのイベントドリブンな動作を定義する function add_InfoWindow(marker,url){ var infowindow = new google.maps.InfoWindow();   google.maps.event.addListener(marker, 'click', function() { infowindow.setContent(url); infowindow.open(map,marker); }); google.maps.event.addListener(map, 'click', function() { infowindow.close(); return marker; }

まとめ:Google Map APIを使うには(2) JSON形式のファイルを読み込むには、jQueryライブラリのgetJSONを使うと簡単である。 ファイルのURLと、読み込んだ後の動作を与える。 吹き出しは、google.maps.InfoWindowで作る。 setContent, open, close等のメソッドはよく使う。 吹き出しの出没は、マーカーや地図のイベント(クリック等)によって起動される。 google.map.event.addListner どのオブジェクトのイベントか、イベントの種類、イベントが発生させる動作

地理データの取得 課題: 住所を緯度・経度に変換する。 より正確な微調整を行なう(例:○棟⇒◇棟)。 ツールを開発した。 http://hishikilab.sakura.ne.jp/project2013/adrs2pos_02.html 入力した住所を、緯度・経度に変換(google.maps.Geocoderを利用) その場所を中心とする衛星写真を表示、そこにマーカーを立てる。 マーカーを移動してボタンを押すと、新しい場所を書き出す。 エクセルにコピー&ペーストして記号で区切る

JSONデータの作成 例: エクセル(CSV)データ テキストエディタで開く 変換用Webページにコピー&ペーストして、変換