google MAP API v3を利用してジオコーディングを作成してみた。
google MAP API v3でジオコーディングを作成してみました。
●複数の住所から経度緯度が取得したい。
●複数の経度緯度情報から住所を取得したいから・・・。
google MAP公式サイトに情報が載っているからすぐ実現可能。
ただAPI制限で、1日2500件までしか取得が出来ない。
それぞれURLにパラメータを指定して、JSON形式のでたが返ってくるから、必要な値を取得すればできあがり!
あまりきれいなソースではありませんが、こんな感じでざっくりと作ればすぐに利用できました。
いろいろ便利なAPIがあるので、もっと有効的に活用していきたいと思います。
<?php
$urls = $_POST["urls"];
$modeType = $_POST["modeType"];
if($urls != ""){
$arr = split("\r\n",$urls);
for($i=0;$i<count($arr);$i++){
//Google Geocoding API制限 1日2500件まで
//初期場所データ
$ido = "";
$keido = "";
$address = "";
$textData = "";
if($modeType == 1){
$address = $arr[$i];
//ジオコーディング 住所→緯度経度
$url = "http://maps.googleapis.com/maps/api/geocode/json?address=".$address."&sensor=false&language=ja";
$obj = distanceJson($url);
$ido = $obj->{'results'}[0]->{'geometry'}->{'location'}->{'lat'};
$keido = $obj->{'results'}[0]->{'geometry'}->{'location'}->{'lng'};
$textData = $obj->{'results'}[0]->{'formatted_address'};
$textData = str_replace("日本, ","",$textData);
$textData = mb_convert_kana( $textData, "n", "utf-8" );
}else{
//逆ジオコーディング 経度緯度→住所
$setDeta = split("\t",$arr[$i]);
$ido = $setDeta[0];
$keido = $setDeta[1];
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".$ido.",".$keido."&sensor=false&language=ja";
$obj = distanceJson($url);
$address = $obj->{'results'}[0]->{'formatted_address'};
$textData = "他候補<br />".$obj->{'results'}[1]->{'formatted_address'}."<br />".$obj->{'results'}[2]->{'formatted_address'}."<br />".$obj->{'results'}[3]->{'formatted_address'}."<br />".$obj->{'results'}[7]->{'formatted_address'};
$address = str_replace("日本, ","",$address);
$address = mb_convert_kana( $address, "n", "utf-8" );
$textData = str_replace("日本, ","",$textData);
$textData = str_replace(", 日本","",$textData);
$textData = mb_convert_kana( $textData, "n", "utf-8" );
}
$strhtml .= "<tr><td>".$address."</td><td>".$ido."</td><td>".$keido."</td><td>".$textData."</td></tr>";
}
sleep(1);
}
function distanceJson($url){
$json = file_get_contents($url,true);
if ($json == false) {
echo "API制限のため取得できない";
return;
}
$obj = json_decode($json);
return $obj;
}
?>
<html>
<head>
<title>ジオコーディング</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h2>ジオコーディング</h2>
<p>[ 注意 ] Google Geocoding API利用制限 1日2500件まで</p>
<form name="fm1" method="POST" action="">
<textarea cols=100 rows=30 name="urls"></textarea><br>
<select name="modeType">
<option value="1">Geocoding(住所→経度緯度)</option>
<option value="0">逆Geocoding(経度緯度→住所)</option>
</select>
<input type="submit" value="確認">
</form>
<table border="1"><tr><th>住所</th><th>経度</th><th>緯度</th><th>備考</th></tr>
<?php echo $strhtml; ?>
</table>
</body>
</html>