• 検索結果がありません。

携帯電話でGoogle Mapsを使う

N/A
N/A
Protected

Academic year: 2021

シェア "携帯電話でGoogle Mapsを使う"

Copied!
28
0
0

読み込み中.... (全文を見る)

全文

(1)

テーマ研究会(04/28)

Google Mapsを使う

政策情報学部

渡辺恭人

riho-m@cuc.ac.jp

メーリングリスト riho-m-rg10@cuc.ac.jp

PHPのファイルは、UTF-8、BOMなしで保存し、

www.cyaneum.orgのpublic_htmlに置く!

資料

http://www.cuc.ac.jp/rg10/

(2)

前回の課題(1)+α

• +α

– 単に$addrを変更するだけでは面白くない

– 利用者がブラウザ(IEなど)から入力できるとよい

– テーマ研究会1で習った内容を復習して使う

• フォームで入力させ、POSTやGETを使って送信

• 実現方法

– 入力用のフォームのHTMLファイルを新規作成

– フォームから送信された住所の文字列を受信す

る部分をgc2.phpに追加する→gc3.phpとする

2

(3)

入力用のフォームのHTMLファイルを

新規作成

• sendaddr.htm ※UTF-8で保存

– 入力用のフォームをHTMLで作成

3

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html lang="ja">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>住所入力</title>

</head> <body>

<form method="POST" action="gc3.php"> 住所:

<input type="text" name="addr" size=“30" /> <input type="submit" value="送信" />

</form> </body> </html>

(4)

sendaddr.htm送信された住所の文字

列を受信する部分をgc2.phpに追加

• gc2.phpを改造して、sendaddr.htmからPOSTで

送信された住所の文字列を受信し、処理する

– 処理内容は変更無し

• Geocodingを利用して緯度・経度を取得

• Heartrails expressを利用して、緯度・経度から最寄り駅

を検索

• 結果を表示

• 変更点

– $addrのところを、POSTで受信したパラメタにする

4

$addr = $_POST['addr'];

gc3.phpとして保存

(5)

Google Maps APIを使うには

• Webサーバごとに、API keyが必要

www.cyaneum.org

でも取得

– ABQIAAAAP1IU9K7W5gU4NWbusT9dQxTwk1T8M

cJfX4uSDENJSU2z68T7eRRPQdTpjWsE5WEo0jVjby

umzoN7Qw

– これをURLやHTMLに組み込んで使う

5

(6)

PC用のサンプル(前半)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>Google Maps JavaScript API Example</title>

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAP1IU9 K7W5gU4NWbusT9dQxTwk1T8McJfX4uSDENJSU2z68T7eRRPQdTpjWsE5WEo0jVjby umzoN7Qw" type="text/javascript"></script>

このファイルを

www.cyaneum.org

のユーザのpublic_htmlにコピー

IEで

http://www.cyaneum.org/~

ユーザ名/maptest.htm

6

Google MapsのJavaScriptライブラリをインポートして自分のプログラムで使え るようにする。

(7)

PC用のサンプル(後半)

<script type="text/javascript">

//<![CDATA[

function load() {

if (GBrowserIsCompatible()) {

var map = new GMap2(document.getElementById("map")); map.setCenter(new GLatLng(35.741518, 139.9077299), 16); } } //]]> </script> </head>

<body onload="load()" onunload="GUnload()">

<div id="map" style="width: 500px; height: 300px"></div> </body> </html>

7

ブラウザとの互換性を調べる 新しいGMap2オブジェ クトを作成しmapという idを持つ<div>要素と結 びつける 中心点の緯度経度を 設定し、ズームレベル 16で表示する <div>要素の大きさ、つ まり地図の表示領域 の大きさは500x300ピ クセルに設定

(8)

機能の追加

• コントロールの追加

– 拡大・縮小用コントロール

– 地図の種類のコントロール

– オーバービューマップの追加

• マーカーの追加

– マーカーの追加

– 情報ウィンドウの表示

8

(9)

コントロールの追加

• 拡大縮小用のコントロール(赤字部分を追

加)

• GSmallMapControlを

GLargeMapControl()に

変えても良い

9

function load() { if (GBrowserIsCompatible()) {

var map = new GMap2(document.getElementById("map"));

map.addControl(new GSmallMapControl());

map.setCenter(new GLatLng(35.741518, 139.9077299), 16); }

(10)

コントロールの追加

• 地図の種類のコントロール(赤字部分を追加)

• 最初から指定した種類の地図を表示

– 航空写真を表示させたいとき

– 普通の地図の場合:G_NORMAL_MAP

– 地図+写真の場合:G_HYBRID_MAP

10

function load() { if (GBrowserIsCompatible()) {

var map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl());

map.addControl(new GMapTypeControl());

map.setCenter(new GLatLng(35.741518, 139.9077299), 16); } }

(11)

コントロールの追加

• オーバービューマップの表示(赤字部分を追

加)

11

var map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl());

map.addControl(new GMapTypeControl());

map.addControl(new GOverviewMapControl(),

new GControlPosition(G_ANCHOR_BOTTOM_RIGHT));

(12)

マーカーの追加

• 表示したい位置を中央に表示するより効果的

(赤字部分を追加)

12

var map = new GMap2(document.getElementById("map"));

var latlng = new GLatLng(35.741518, 139.9077299);

map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl(),

new GControlPosition(G_ANCHOR_BOTTOM_RIGHT)); map.setCenter(latlng , 16);

var marker = new GMarker(latlng); map.addOverlay(marker);

(13)

情報ウィンドウの表示

• 任意の位置にメッセージを表示(ここではマー

カーと関係ない)

• openInfoWindowHtml()を利用

– 緯度経度とHTMLのコードを指定できる

– 赤字部分を修正

13

(14)

情報ウィンドウの表示

14

var map = new GMap2(document.getElementById("map")); var latlng = new GLatLng(35.741518, 139.9077299);

map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT)); map.setCenter(latlng , 16); map.openInfoWindowHtml(map.getCenter(), "<h4>千葉商科大学</h4><p>ここが我が母校の" + "<a href='http://www.cuc.ac.jp/'>千葉商科大学</a>です。" + "<br>学長もがんばってる</p>");

(15)

マーカーをクリックしたら

情報ウィンドウを表示させる

• イベントの発生:マウスでクリック、など

• イベントの処理:イベントリスナーを使う

– クラス:GEventを使う

• 静的メソッド addListener()の引数に、マーカーに対する

クリックをどう処理するかを指定する

15

(16)

マーカーをクリックしたら

情報ウィンドウを表示させる

16

var map = new GMap2(document.getElementById("map")); var latlng = new GLatLng(35.741518, 139.9077299);

var message = "<h4>千葉商科大学</h4><p>ここが我が母校の" + "<a href='http://www.cuc.ac.jp/'>千葉商科大学</a>です。" + "<br>学長もがんばってる</p>"; map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT)); map.setCenter(latlng , 16);

var marker = new GMarker(latlng); map.addOverlay(marker);

GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(message); });

(17)

PHPと組み合わせる

• Google Maps APIはJavaScriptからの利用を前

提に作られており、そのままではPHPで使え

ない

• ライブラリ「GoogleMapsAPIクラス」を使用する

– Phpinsider.comから配布されている

– PHPの知識のみでGoogleMapsAPIを利用可能

– 日本対応部分は、秋元裕樹氏作成の日本向け

対応クラスを利用する

• 次回やります

17

(18)

携帯電話の制約

• PCのように、JavaScriptがブラウザから使えず、

Ajaxにも対応していないので、Google Mapsなど

の楽しいWebアプリは使えない

• しかし、地図を利用したいアプリやサービスはた

くさんある

• 解決法

– 地図画像を静止画として利用する

– Google Static Maps API(Googleマップの静的画像用

API)が公開

• http://code.google.com/intl/ja/apis/maps/documentation/st

aticmaps/

(19)

地図を静止画で出力する方法

• Google Static Maps API(Googleマップの静的画像

用API)を使う

http://code.google.com/intl/ja/apis/maps/documenta

tion/staticmaps/

• 使い方例

– 「千葉商科大学を中心に、ズームレベル14で、画像

サイズを240ドット×320ドットで表示する

– http://maps.google.com/staticmap?center=35.74151

8,139.9077299&zoom=14&size=240x320&maptype=

mobile&key=ABQIAAAAP1IU9K7W5gU4NWbusT9dQx

Twk1T8McJfX4uSDENJSU2z68T7eRRPQdTpjWsE5WEo

0jVjbyumzoN7Qw

このURLをブラウザで開く か HTMLの中でIMGタグに

組み込む

19

(20)

使い方例の地図画像

(21)

画像にマーカーを追加する

• URLにマーカーの座標と設定値を並べて書く

– markers=markerDescriptor1|markerDescriptor2|mark

erDescriptor3|...

• 設定値(オプションなくてもよい。これらをつなげ

て書く。)

– 大きさ: size {tiny, mid, small} 省略すると普通のサイ

– 色: color {black, brown, green, purple, yellow, blue,

gray, orange, red, white}.

– アルファベットまたは番号: alphanumeric-character

{a-z, 0-9}

(22)

画像にマーカーを追加する

• 例

– 千葉商科大学に青で「S」の文字のマーカーを付

ける

22

http://maps.google.com/staticmap?center=35.741518,139.9077299&zoom=14&size=240x32 0&maptype=mobile&key=ABQIAAAAP1IU9K7W5gU4NWbusT9dQxTwk1T8McJfX4uSDENJSU2 z68T7eRRPQdTpjWsE5WEo0jVjbyumzoN7Qw&markers=35.741518,139.9077299,blues

(23)

さらにマーカーを追加する

• 「|」で区切って位置情報と設定値を付ける

• 例、

– 国府台駅の緑で「G」の文字のマーカーを付ける

23

http://maps.google.com/staticmap?center=35.741518,139.9077299&zoom=14&size=240x32 0&maptype=mobile&key=ABQIAAAAP1IU9K7W5gU4NWbusT9dQxTwk1T8McJfX4uSDENJSU2 z68T7eRRPQdTpjWsE5WEo0jVjbyumzoN7Qw&markers=35.741518,139.9077299,blues|35.73 6411,139.902906,greeng

(24)

位置情報の取得

• 携帯電話やスマートフォンにはGPSが内蔵さ

れていることが多く、地球上の絶対位置(緯

度・経度・(高度))を取得することができる

• GPSが使えない場合

– 大まかな位置を取得することができる

• 携帯電話では基地局情報

• PCやスマートフォンではネットワーク位置情報

24

(25)

携帯電話での位置情報取得

• 各携帯電話会社ごとに方法は異なるが、GETや

POSTでサーバに送る仕組みがある(資料参照)

• サンプルプログラムを試す

• http://www.cyaneum.org/~riho-m/keitai_loc.zipをダウン

ロードして展開

• 3つのファイルを、www.cyaneum.orgの自分の

publuc_htmlに転送する。

• 次に、携帯電話から、http://www.cyaenum.org/~ユーザ

名/gps.phpにアクセスする

25

(26)

PCやスマートフォンで位置情報取得

• HTML5のgeolocation APIを使用する

– JavaScriptから呼び出す

• サンプルプログラムを試す

• http://www.cyaneum.org/~riho-m/geo0.zipをダウンロード

して展開

• geo0.htmlファイルを、www.cyaneum.orgの自分の

publuc_htmlに転送する。

• 次に、PCまたはスマートフォンから、

http://www.cyaenum.org/~ユーザ名/gps.phpにアクセス

する(※PCの場合は、FirefoxかChromeブラウザを使う)

26

(27)

課題

• 後半のGoogle Mapsを静止画で利用する部分を

gc3.phpに追加して、検索された最寄り駅をGoogle

Mapsで表示させなさい。入力実行したプログラムと、

その実行結果をレポートしなさい。

– レベル0: 結果ごとに地図を表示させる

– レベル1: 地図にマーカーを付ける

– 上級レベル: 検索結果を1つの地図に複数マーカーで表

示させる

• レポート方法

– プログラムそのもの(テキスト)

– 実行画面のスクリーンダンプ

– 感想

27

(28)

課題(つづき)

• 提出物

– プログラムファイルと実行結果をWordのファイルに貼り付

けて、メールで提出する

• 実行画面は、フリーソフトのWinShotを使うか、または、Altキー+

PrintScreenキーを使う。

– ファイル名: kadai0428-学籍番号.doc

• 提出方法

– メールで、

riho-m-rg10@cuc.ac.jp

に送る

– 私個人宛のメールは受け取らないので注意

• 締切

– 5/11 18:00

28

参照

関連したドキュメント

携帯端末が iPhone および iPad などの場合は App Store から、 Android 端末の場合は Google Play TM から「 GENNECT Cross 」を検索します。 GENNECT

*この CD-ROM は,Microsoft Edge,Firefox,Google Chrome,Opera,Apple Safari

los sitios que enlazan a la p´ agina A no influyen uniformemente; depende del n´ umero de v´ınculos salientes que ellas posean: a m´ as v´ınculos salientes de una p´ agina

Classroom 上で PowerPoint をプレビューした状態だと音声は再生されません。一旦、自分の PC

サーバー API 複雑化 iOS&amp;Android 間で複雑な API

従来から iOS(iPhone など)はアプリケーションでの電話 API(Application Program

社内セキュリティ等で「.NET Framework 4.7.2」以上がご利用いただけない場合は、Internet

携帯電話の SMS(ショートメッセージサービス:電話番号を用い