勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

google map apiとPHPを組み合わせて複数マーカーとウィンドウを連携させる

   2021/03/11  PHP Google Maps API Google

やりたかった事は、

  • mysqlから経度緯度、マーカー名、マーカーIDを持ってきてgooglemapにマーカーを刺す
  • マーカーをクリックするとウィンドウが表示
  • ウィンドウの中にマーカー名とリンクを表示。リンクは[?key=マーカーID]みたいにクエリをそれぞれつけたい

というもの。

先にソース。

 

var currentWindow = null;

var latlng = new google.maps.LatLng(<?=$addressList[0]['x']?>,<?=$addressList[0]['y']?>); //初期位置

var myOptions = {
	zoom: 12, 
	center: latlng, 
	mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); //map生成

<?php for($i = 0; $i < count($addressList); $i++){ ?>
	var addressArray = {
		'id':'<?=$addressList[$i]["id"]?>', 
		'name':'<?=$addressList[$i]["name"]?>', 
		'x':'<?=$addressList[$i]["x"]?>', 
		'y':'<?=$addressList[$i]["y"]?>'
	};
	makeMarker(addressArray);
<?php } ?>

//マーカー作成
function makeMarker( addressArray ){
	var marker = new google.maps.Marker({
		position : new google.maps.LatLng(addressArray.x,addressArray.y), 
		map: map
	});
	var addressArray;

	var infoWindow = new google.maps.InfoWindow();
	google.maps.event.addListener(marker, 'click', function() {
		if (currentWindow) {
			currentWindow.close();
		}
		infoWindow.setContent('マーカー名:'+addressArray.name+'<br><a href="detail.php?e='+addressArray.id+'&f=<?=$folder_id?>">詳細はコチラ</a>');
		infoWindow.open(map,marker);
		currentWindow = infoWindow;
	});
}

 

$addressListに予めMySQLから、マーカー情報を呼び出して配列で突っ込んでおく。

google map apiを初めて使うことになり、何とかなるやろか思ってたけどけっこうむずかった。

mapに出力するところから先に作ったけど、php→mysqlに入れる際にformから住所送って(出来ればajaxで)ジオコーディング? かなんかでチェックするシステムも作りたいところ。

よく考えたらありがちっぽいので、いいのがあったらぱくろう。

 - PHP Google Maps API Google

  関連記事

GoogleMapAPIでクリックした座標にマーカーを設置する方法

GoogleMapAPIでクリックした位置にマーカーを設置し、座標の経度緯度をテ ...

GoogleMapAPIのジオコードで存在するはずの住所が見つからない

GoogleMapAPIを利用したプログラムで確かに存在するはずの住所をジオコー ...

Google Maps APIで半径●メートル範囲を円で表示する方法

Google Maps APIでマーカーを立てて、そこから範囲●mもしくは●km ...

GoogleMapAPIで住所・経度緯度入力後にマーカーを移動させる

フォーム内に住所・経度・緯度のテキストボックスを設置し、住所を入力後にボタンを押 ...

Google Maps APIで現在地取得と目的地までのルートを表示させる方法

Google Maps APIを使って現在地を取得しつつ、目的地までのルートを表 ...