2011年4月19日火曜日

9 マップデータ 7 - ka-Map 日本語の地図の Search 設定

9-4-6 日本語の地図の Search 設定
Query は、結果を日本語で表示できます。
Search は、抽出がうまくできず、すべてのデータが表示されます。
コードに修正が必要です。

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

---
 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" "行政区画"
"queryable" "true"
"searchfield" "name"
"fields" "name:Name"
END
CLASS
NAME "kukaku"
STYLE
COLOR 255 255 204
OUTLINECOLOR 204 204 204
END
   LABEL
    MINFEATURESIZE 40
     TYPE TRUETYPE
     FONT vl-gothic
    ENCODING utf-8
     SIZE 8
   END
END
  TEMPLATE name_template.html
 END
---

しかし、これだけでは結果が抽出されません。
これは、ka-Map が utf-8 で入力した文字と、ISO-8859-13 の文字コードのマップデータの比較に限定しているからのようです。

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

//iconv("UTF-8", "ISO-8859-13", $_REQUEST['searchstring']);
//$psearch = $searchstring; //Kumar version

次の行の下に//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 <td>"$val"</td>;の前に次の行を追加します。(275行あたり)

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


すべて修正した後の画像です。

0 件のコメント: