2011年4月19日火曜日

9 マップデータ 5 - ka-Map GROUPの日本語表示

9-4-4 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 を追加)に書かれている設定でマップファイルに設定します。

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

---
LAYER
NAME tokyo_kukaku
GROUP tokyo_kukaku
TYPE LINE
STATUS ON
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=nippon_bmi host=localhost user=user password=password"
DATA "the_geom from tokyo_kukaku"
# DATA "../mapdata/tokyo_bmi/AdmArea.shp"
METADATA #追加
"group_title" "行政区画" #追加
END #追加
CLASS
NAME "kukaku"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
END
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';
}

---
//$dynamicgroup only if present
$dynamicgroup =($szDynamicgroup)?"dynamicgroup:'".$szDynamicgroup."',":'';

$szLayers .= "map.addLayer(new _layer( { ".
"name:'".$groupName."',".
"visible:".$status.",".
"opacity:".$opacity.",".
"title:'".$title."',". //この行を追加
"imageformat:'".$imageformat."',".
"queryable:".$szQueryable.",".
"subgroup:'".$szSubgroup."',".//Added by full (legend Tree)
$dynamicgroup.
"tileSource:'".$tileSource."',".
"redrawInterval:".$redrawInterval.",".
"refreshInterval:".$refreshInterval.",".
"scales: new Array('".implode("','",$groupScaleVis)."')}));";
}
---

(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 件のコメント: