MapScriptまつり#3 - ピンを差してみよう

gif画像でピンを立てるってのをやってみます。
まず、32 * 32 のピンの画像ファイルを作っておきます。
mapfileで、MAPオブジェクト直下に次のディレクティブを置きます。

  SYMBOLSET ./symbols.txt

symbols.txt は次のようなかんじ。

SYMBOLSET
  SYMBOL
    NAME "pin-32x32"
    TYPE PIXMAP
    IMAGE "./pin-32x32.gif"
  END
END

スクリプトには、次を挿入します。位置は…四角形の描画の後にしておきましょう。

# ======== 35.652, 139.742 にピンを立てる ==== ここから
# レイヤ作成
$layerObj = new mapscript::layerObj($mapObj);
$layerObj->STORE('name','PIN');
$layerObj->STORE('status',$mapscript::MS_ON);
$layerObj->STORE('type',$mapscript::MS_LAYER_POINT);

# class, style 作成
$classObj = new mapscript::classObj($layerObj);
$styleObj = new mapscript::styleObj($classObj);

# styleにsymbolを入れる
$styleObj->setSymbolByName($mapObj,'pin-32x32');
# 中心(16,16)がポイントになるのを 22,28 に移動させたい
$styleObj->STORE('offsetx',-6);
$styleObj->STORE('offsety',-12);

# FEATUREを付ける(POINTでも1つの端点を持つ1つの線からなるshapeObjを使用する必要あり)
$lineObj = new mapscript::lineObj();
$lineObj->add(new mapscript::pointObj(139.742,35.652));
$shapeObj = new mapscript::shapeObj($mapscript::MS_LAYER_POINT);
$shapeObj->add($lineObj);
$layerObj->addFeature($shapeObj);
# ======== 35.652, 139.742 にピンを立てる ==== ここまで

ここで、四角形を描く部分とピンを差す部分とを入れ替えてみると、せつない画像になった…。
MapScriptについては、とりあえずここまで、と思う。ネタ少ないにゃあ…。