
行政が出す地理空間情報には,地域メッシュコード単位の場合があります。そこで,緯度と経度を基に,地域メッシュコードを計算するAPIを作成しました。3次メッシュまで計算してくれます。プログラムは,こちらのスクリプトを参考に作成させていただきました。
lat: 緯度
lon: 経度
※ 度,分,秒に分割したものは対象としていませんのでご注意ください。
http://webmodis.iis.u-tokyo.ac.jp/~tagchan/mesh_code/mesh_code.php?lon=139.75021&lat=35.68965
フォーマットはJSONPです。1次,2次,3次メッシュと,全てのコードを繋ぎ合わせたコードが返されます。ソースコードはこちら(mesh_code.pl)です。
MeshCodeApi({
"FirstCode" : "5339",
"SecondCode" : "46",
"ThirdCode" : "20",
"MeshCode" : "53394620"
});
var map;
var marker;
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GScaleControl());
map.addMapType(G_PHYSICAL_MAP);
map.addControl(new GMenuMapTypeControl(true, false));
map.enableScrollWheelZoom();
map.enableGoogleBar();
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(35, 137), 6, G_PHYSICAL_MAP);
var icon = new GIcon();
icon.image = "http://www.google.com/intl/en_ALL/mapfiles/arrow.png";
icon.shadow = "http://www.google.com/intl/en_ALL/mapfiles/arrowshadow.png";
icon.iconSize = new GSize(39, 34);
icon.shadowSize = new GSize(39, 34);
icon.iconAnchor = new GPoint(10, 34);
GEvent.addListener(map, 'click', function(overlay, point){
getJSON(point.lat(), point.lng());
addMarker(point,icon);
});
}
}
function getJSON(lat, lon) {
var req_url = "http://webmodis.iis.u-tokyo.ac.jp/~tagchan/mesh_code/mesh_code.php?lat="+lat+"&lon="+lon+"";
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = req_url;
document.getElementsByTagName("head")[0].appendChild(script);
return;
}
function MeshCodeApi( obj ){
var first = obj.FirstCode;
var second = obj.SecondCode;
var third = obj.ThirdCode;
var code = obj.MeshCode;
var html = "1次メッシュ:"+first+",2次メッシュ:"+second+",3次メッシュ:"+third+"<br>メッシュコード:"+code+"";
document.getElementById("list").innerHTML = html;
}
function addMarker(point, icon){
map.clearOverlays();
marker = new GMarker(point,icon);
map.addOverlay(marker);
}
2008/4/26: α版を公開しました。
Copyright (c) Hitoshi Taguchi 2000-2008 All Rights Reserved.