2008年7月17日木曜日

国土数値地図で東京を表示 5ka-Map GROUPの日本語表示

GROUPのタイトルを日本語にします

Main Page/ja-Ka-Map Wiki
http://ka-map.ominiverdi.org/wiki/index.php/Main_Page/ja

の  マップファイル設定 の Adding International character support for layer names レイヤー名に国際文字を使用するには をクリックします。

ここには、レイヤー名に国際文字を使用する方法が英語で書いてあります。
また、[ka-Map-user]メーリングリストも参考にしました。
(1) add a metadata which called "group_title" in each group in .map file(マップファイルのメタデータ metadata に group_title を追加)に書かれている設定でマップファイルに設定します。

tokyo_shp.mapのgyoseikaiレイヤを次のように追加します。

---
 LAYER
  NAME gyoseikai
  GROUP gyoseikai #追加 英語で
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO"
  METADATA #追加
   "group_title" "行政界" #追加
  END #追加
  CLASS
   NAME "City Boundaries"
   STYLE
    OUTLINECOLOR 153 153 153
   END
   LABEL
     MINFEATURESIZE 40
    TYPE TRUETYPE
    FONT vl-gothic
    ENCODING SJIS
    SIZE 8
   END
  END
  TEMPLATE temp_tokyo_shp.html
 END
---

(2) in kamap.js file は、Adding International character support for layer nameではなく、メーリングリストを参考に次のように追加します。
(ka-map/htdocs/kaMap.js)
---
this.opacity = (typeof(o.opacity) != 'undefined') ? o.opacity : 100;

this.title = (typeof(o.title) != 'undefined') ? o.title : 'unnamed';
//この行を追加

this.imageformat = (typeof(o.imageformat) != 'undefined') ? o.imageformat : null;
---

(3) add the "title" attribute like... もメーリングリストを参考に次のように追加します。
init.php ファイルに
(ka-map/htdocs/init.php)
---
/* detect layer opacity (default 100% opaque) */
$opacity = $oLayer->getMetaData('opacity');
if ($opacity == '') {
$opacity = 100;
}

$title = $oLayer->getMetaData('group_title');
//この行を追加

/* detect tile source options (cache, redraw, nocache, or auto) */
$tileSource =
strtolower($oLayer->getMetaData('tile_source'));
if(($tileSource != 'cache') && ($tileSource != 'redraw') && ($tileSource != 'refresh') && ($tileSource != 'nocache')) {
$tileSource = 'auto';
}

---
"opacity:".$opacity.",".

"title:'".$title."',".
//この行を追加

"imageformat:'".$imageformat."',".
---

(4)in kaLegend.js file を次のように修正します。
(ka-map/htdocs/kaLegend.js
---
//td.innerHTML = name;
//この行のコメントアウト
td.innerHTML = oLayer.title;
//この行を追加
---



しかし、これでは、GROUPを設定していないものも含めたすべてのマップファイルのすべてのレイヤのメタデータ METADATA に "group_title" を設定しないと、Map info のレイヤ名が空欄になってしまいます。



そこで、独自に次のように修正してみました。

---
//td.innerHTML = name;
//この行のコメントアウト
if (oLayer.title != '') {
gtitle = oLayer.title;
} else {
gtitle = name;
}
td.innerHTML = gtitle;
//これらの行を追加
---

0 件のコメント: