2010年10月23日土曜日

OpenLayers

Gmapを勉強して
結構APIを使えるようになったら
OpenLayersで使うことになった

一番やりたいことは、OpenLayersでGmapのLocalSearchを使うこと
空間検索や住所検索、ジャンル検索なんかを
LocalSearchでできるようになったものの

OpenLayersとGmapで座標系が違うので
これが結構大変だった…

LocalSearchに渡す座標系はGmap系の座標でないといけないので
//OpenLayersの中心座標をもらってくる。GMapobjはOpenLayersでのmapオブジェクトしている。
lat = GMapobj.getCenter().lat;
lon = Gmapobj.getCenter().lon;

//座標をOpenLayersのものからGmapのものへ変換
var trans_pnt = OpenLayers.Geometry.Point(lon, lat).transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"))
var search_pnt = new google.maps.LatLng(parseFloat(trans_pnt.y),parseFloat(trans_pnt.x));

//LocalSearchで検索した結果の座標系をOpenLayersのものへ変換し、中心の位置を変更。
GMapobj.setCenter(new OpenLayers.LonLat(parseFloat(lon), parseFloat(lat)).transform( new OpenLayers.Projection("EPSG:4326"), GMapobj.getProjectionObject()));

というようなことをしないといけなかった。