第1回「Google map API」google mapを表示 PHP HTML5 css3 javascript API

こんにちは。今回は「Google map」を自分のファイルに表示する方法に触れていきます。

※2017年までは誰でも簡単に表示できましたが、現在はAPIキーを取得していないと表示できません。

その為、今回、APIキーの取得方法を含め、表示方法をまとめることにしました。

 

サンプルページへ移動

移動したら、サイトの位置情報設定を「許可」にすると、現在地のGoogle mapが表示されます

※動作確認が終わったら、位置情報設定を「ブロック」にしてください。

 

 

目次

・「Google map」のAPIキーを取得

・「Google map」のオープンソース

・具体的なソースの説明

・オプション

・まとめ

・今回の記事を書くにあたって参考にしたサイト

 


・「Google map」のAPIキーを取得

引用元:Google マップを表示しよう!

まずはAPIの取得から

ここからは、早速Google Maps APIの使い方を見ていきます。

初めて使う場合は、まずAPIキー(認証情報)の取得をします。
APIキーはGoogleアカウントで管理されるので、任意のアカウントでログインをしておいてください。

※ 2016年6月のアップデート以降、新規利用時にはAPIキーの取得が必須となりました。
アップデート以前に実装したまま、APIキーなしの形式を使っていたとしても動作はしますが、URLが変わった際などにエラーが起きる可能性がある点に注意です。

APIキーの新規取得

今回は利用したいAPIの種類が決まっているので、「Google Maps JavaScript API」ページへアクセスして右上の「キーの取得」ボタンを押します。

キーの取得

ポップアップ上で好きな「プロジェクト名」を入力し、利用規約に同意後「CREATE AND ENABLE API」をクリック。

Enable Google Maps JavaScript API

すると、準備完了のメッセージとともにYOUR API KEYの部分に取得したAPIキーが表示されました!

You're all set!

ここで見逃してはいけないのが下記の一文。「セキュリティ向上のため、キーの使用を制限してください」といった内容が書かれています。

To improve your app’s security, restrict this key’s usage in the API Console.

API Consoleのリンクから、「Google API Console」の画面に移動しましょう。

キーの制限が必要な理由

初期状態では、APIキーさえ知っていれば知らない人が他のサイトで勝手に使うこともできてしまう状態です。キーの制限設定で利用範囲を制約することで、これを防ぐことができます。

制限設定がされていない場合「Google API Console」の画面上でも警告マークが表示されます。

警告マーク

キーの制限方法にはいくつか選択肢がありますが、一番わかりやすい方法はHTTPリファラー(ウェブサイト)です。

HTTPリファラーによるキーの制限

例えば入力欄にwww.granfairs.com/*と入力すれば、ドメインがwww.granfairs.com配下のページでのみAPIキーを利用できるようになります。

 

参考URL:https://www.granfairs.com/blog/staff/google-maps-api-01


・「Google map」のオープンソース

APIキーを取得しましたら、Google mapをブラウザで表示してみましょう。

下記を「index.html」と名前を付けて保存してください。

<!DOCTYPE html>
<html lang="ja">
<head>

<meta charset="UTF-8">

<title>位置情報の取得</title>

<!-- Google mapのCSS -->
<style>
#maps{
	height:300px;
	width:500px
}
</style>

<!-- google mapを表示する為に必要なjabascript  keyにはAPIキーを書き換えてjsファイルを読み込みます。 -->
<script src="//maps.googleapis.com/maps/api/js?key=「ここにAPIキーを書いてください」&callback=initMap" async></script>

</head>
<body>

<h2>現在の位置情報</h2>

<!-- google mapを表示するdiv -->
<div id="maps"></div>

<script>
</script>

<!-- Google Map を表示するjavascript -->
<script>
function initMap() {
	//現在位置を許可させ、位置を取得する javascript 参考URL:http://taitan916.info/blog/?p=2280
	var ret = new Array();
	if( navigator.geolocation ){
		navigator.geolocation.getCurrentPosition(
		function( pos ){ //位置取得成功
			ret['long'] = pos.coords.longitude; //経度
			ret['lat'] = pos.coords.latitude; //緯度
			
			//位置を指定して、Google mapに表示する javascript 参考URL:https://www.granfairs.com/blog/staff/google-maps-api-01
			var mapPosition = {}
			mapPosition["lat"] = ret['lat'];
			mapPosition["lng"] = ret['long'];
			var mapArea = document.getElementById('maps');
			var mapOptions = {
				center: mapPosition,
				zoom: 16,
			};
			var map = new google.maps.Map(mapArea, mapOptions);
			
			//現在地にマーカーを付けます。参考URL:https://developers.google.com/maps/documentation/javascript/markers?hl=ja
			var marker = new google.maps.Marker({
			    position: mapPosition,
			    title:"Your location"
			});
			marker.setMap(map);
			
			result( ret );
		},
		function( error ){ //失敗
			switch( error.code ){
				case 1: ret['msg'] = "位置情報の利用が許可されていません"; break;
				case 2: ret['msg'] = "デバイスの位置が判定できません"; break;
				case 3: ret['msg'] = "タイムアウトしました"; break;
			}
			result( ret );
		}
		);
	} else { //使用不可のブラウザ
		ret['msg'] = 'このブラウザでは位置取得が出来ません。';
		result( ret );
	}
	//コンソールにログを出力 ※本番環境ではログを出さないので、消しましょう。
	function result( ret ){
		console.log( ret );
	}
}
</script>

</body>
</html>

18行目の「ここにAPIキーを書いてください」の部分は、先ほど取得したAPIキーを書き換えてください。

ブラウザで確認すると、位置情報を求められるので、今回のみ「許可」すると、現在地の地図が表示されます。

最初にも書きましたが、通常は「ブラウザの位置情報」を「ブロック」にしてください

悪意のあるサイトもありますので、信頼できるサイトのみ「許可」しましょう。

 

参考URL:http://taitan916.info/blog/?p=2280


・具体的なソースの説明

 

<!-- Google mapのCSS -->
<style>
#maps{
	height:300px;
	width:500px
}
</style>

9行目~15行目

ここではgoogle mapを表示する、divタグの高さと幅を設定しています。

 

<!-- google mapを表示する為に必要なjabascript  keyにはAPIキーを書き換えてjsファイルを読み込みます。 -->
<script src="//maps.googleapis.com/maps/api/js?key=ここにAPIキーを書いてください" async></script>

17行目~18行目

scriptタグで、ネット上のjavascriptファイルを読み込みます。

大事なのは18行目の「ここにAPIキーを書いてください」の部分は、先ほど取得したAPIキーを書き換えてください。

 

<!-- google mapを表示するdiv -->
<div id="maps"></div>

25行目~26行目

このdivタグ内に、地図が表示されます。「id名」のみ設定します。

 

<!-- Google Map を表示するjavascript -->
<script>
function initMap() {

~~省略~~

}
</script>

31行目~80行目

google mapを表示するjavascripです。

initMap()」関数は、18行目でネット上のJSファイル(google map専用のJSファイル)を読み込んでいると、ページを読み込んだときに、実行される関数です。

 

console.log( ret );

77行目

テストファイルとして、コンソールにログを出しています。ブラウザで「F12」ボタンを押すと確認できます。

本番環境では、ログを出したくないので、必ずコメントアウト「//」もしくは一文を削除しましょう

 

 

 

現在位置ではなく、決まった住所を表示したい場合

<!-- 住所を指定して、Google mapを表示する場合 -->
<h2>住所を指定して表示「東京都府中市宮町3-1」</h2>

<div id="google_map" style="height:300px;width:500px;"></div>

<script src="https://maps.googleapis.com/maps/api/geocode/js?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=「ここにAPIキーを書いてください」" type="text/javascript"></script>

<script>
	//COMTOPIA流Google MAP表示方法
	var geocoder = new google.maps.Geocoder();//Geocode APIを使います。
	var address = "東京都府中市宮町3-1";
	geocoder.geocode({'address': address,'language':'ja'},function(results, status){
		if (status == google.maps.GeocoderStatus.OK){
			var latlng=results[0].geometry.location;//緯度と経度を取得
			var mapOpt = {
				center: latlng,//取得した緯度経度を地図の真ん中に設定
				zoom: 15,//地図倍率1~20
				mapTypeId: google.maps.MapTypeId.ROADMAP//普通の道路マップ
			};
			var map = new google.maps.Map(document.getElementById('google_map'),mapOpt);
			var marker = new google.maps.Marker({//住所のポイントにマーカーを立てる
				position: map.getCenter(),
				map: map
			});
		}else{
			alert("Geocode was not successful for the following reason: " + status);
		}
	});
</script>

 

とhtml内に、にコピペしてください。「ここにAPIキーを書いてください」は書き換えてください。

ちなみに少しエラーが出ますが、今のところ問題ない用なので保留します。

参考URL:http://comtopia.jp/google-map-api 


・オプション

Google Maps API 公式サイト

上記のサイトににて詳しく記載されています。

マップにマークを付けたり、コントロールバーを非表示にしたり、沢山のオプションがあります。

 

作成される環境によって、オプションを変更してみてはいかがでしょうか。

 


・まとめ


・今回の記事を書くにあたって参考にしたサイト

WebサイトにGoogle マップを表示しよう!

PHPで位置情報を取得してGoogleMapAPIで使用する方法

マーカーをmapに表示しよう

Google Map APIを使ってGoogleマップをWebサイトに掲載

Google API ライブラリ

参考にさせて頂いたサイトの管理者様、今回もありがとうございました。

,,,,,

Comments

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です