[嘘言語] Google Maps APIが提供しているJavascriptのクラスをPHPからも使えるようにしておきたい

って書くと何のため?とおもわれるだろうが,たとえばこんな想定.

  • マーカーや吹き出しをデータベースにもたせておく
  • それを地図上に出す

普通に載っているサンプルはこんなかんじ


  
    <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Map with <a class="keyword" href="http://d.hatena.ne.jp/keyword/PHP">PHP</a>
    
  
  
    <Div id="map" style="width:300px; height:300px"></div>
    
  

実際には new GLatLng(32.5, 135.0) や "Test" はデータベースからひっぱってくるものだから,こう書きたい:

<?php
   select from  ...
   //中略.sqlを発行して$resultに吹き出しのデータ(緯度経度文字)をいれる)
     $lat=new GLatLng($result["ido"],$result["keido"])
     $mesg=$result["mesg"];
?>

  
    <a class="keyword" href="http://d.hatena.ne.jp/keyword/Google">Google</a> Map with <a class="keyword" href="http://d.hatena.ne.jp/keyword/PHP">PHP</a><
    
  
  
    <Div id="map" style="width:300px; height:300px"></div>
    
  


?>

つまり,位置情報をあらわすオブジェクトGLatLngをPHPで生成して,そのままJavascriptにながしこむ,ということをしたい.

...書いていて思ったが,これだと

      if (GBrowserIsCompatible()) {
         var map = new GMap2(document.getElementById("map"));
         map.setCenter(new GLatLng($result["ido"],$result["keido"]), 10);
         map.openInfoWindow(map.getCenter(),
             document.createTextNode($result["mesg"]));
      }

でもあまりかわらんなあ.まあ,

  • もっとオブジェクトが複雑になったとき
  • $result["ido"]にケッタイな文字を入れ込まれてXSSになるのを防ぎたいとき
  • O-Rマッピングが発達して,SQL->PHP->JSへと透過的にオブジェクトを投下できるようになったとき

のことを見越してのことだ.