2008年7月20日日曜日

国土数値地図で東京を表示 7日本語の地図のSearch設定

日本語の地図のSearch設定

tokyo_shp.mapのgyoseikaiレイヤにSearchに必要な設定を追加します。

---
 LAYER
  NAME gyoseikai
  GROUP gyoseikai
  TYPE POLYGON
  STATUS ON
  DATA "../mapdata/tokyo/N03-071001_13.shp"
  LABELITEM "SHIKUCHOSO"
  METADATA
   "group_title" "行政界"
   "layer_encoding" "SJIS"
   "queryable" "true"
   "searchfield" "SHIKUCHOSO" #ここを追加
   "fields" "GUN_SEIREI:郡政令,SHIKUCHOSO:市区町村"
  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
---

しかし、これだけでは結果が抽出されません。
これは、ka-Mapがutf-8でかかれているのですが、マップデータはShift-JISだからです。



マップデータの文字コードをka-Mapで表示できるように変換するようにしました。
htdocs/tools/search/kaSearch.phpファイルの次の行を修正します。

//iconv("UTF-8", "ISO-8859-13", $_REQUEST['searchstring']);
//$psearch = $searchstring; //Kumar version
(この行をコメントアウト。"ISO-8859-3"を"sjis"に変えると他の文字コードのデータが使えなくなる。)

次の行の下に//get LAYERENCODING以下を追加
$szSearchfield = $oLayer->getMetaData('searchfield'); //140行あたり
//PRINTING STUFF

//get LAYERENCODING
$oLayer = $oMap->getLayer($i);
$szLayerEncode = $oLayer->getMetaData("layer_encoding");
if ($szLayerEncode != '') {
 $layerencode = $szLayerEncode;
} else {
 $layerencode = 'utf-8';
}
//END get LAYERENCODING

$searchstring = iconv("utf-8", $layerencode, $_REQUEST['searchstring']);
$psearch = $searchstring; //Kumar version

すべてのecho"$val";の前に次の行を追加します。(275行あたり)

$val = iconv($layerencode, "UTF-8", $val);

0 件のコメント: