<< VB.NET 2005 Express | top | 自分のこといろいろ >>

geocoder.ja を VB.NET から使う(コード編)

※先に準備編でgeocoder.ja用のデータベース構築を参照ください。
※VB.NET に ついては、VB.NET 2005 Express を参照ください。

1.フォームの準備
VB.NETで、Form1に Button を3つ配置します。
それぞれ、Textプロパティを適当につけます。
ここでは、「DB読込」「変換」「終了」とします。

フォームに、TextBox をひとつ配置します。
TextBox1のTextプロパティを、
 東京都新宿区西新宿2-8-1
などの住所を入れておきます。

フォームに、Label をひとつ配置します。

2.プロジェクトにgeocoderja.dll を追加
ソリューションエクスプローラで、”追加”−”既存の項目”を選択して、
geocoderja のプログラムフォルダの中の、bin フォルダにある、
geocoderja.dll を選択して、「追加」ボタンを押します。





3.geocoder.ja の 関数を呼び出す定義をする。
ソリューションエクスプローラバーの「コードの表示」などで、
Form1 のコードを表示します。

以下をコピペします。

    Public Declare Function gcjDbLoad Lib "geocoderja.dll" _
        Alias "gcjDbLoad" ( _
        ByVal dbDirPath As String, _
        ByVal loadLevel As Integer) As Integer
    Public Declare Function gcjDbEnd Lib "geocoderja.dll" _
        Alias "gcjDbEnd" () As Integer
    Public Declare Function gcjAdrStr2Code Lib "geocoderja.dll" _
        Alias "gcjAdrStr2Code" ( _
        ByVal address As Char(), _
        ByRef ADR_CODE As IntPtr) As Integer
    Public Declare Function gcjAdrCode2Point Lib "geocoderja.dll" _
        Alias "gcjAdrCode2Point" ( _
        ByRef ADR_CODE As IntPtr, _
        ByRef latitude As Double, _
        ByRef longitude As Double) As Integer

上から下記の関数の定義をしています。とりあえず、使うものだけです。
  • 住所データベースのメモリへの格納(gcjDbLoad)
  • ライブラリの利用終了処理(gcjDbEnd)
  • 住所を住所コードに変換(gcjAdrStr2Code)
  • 住所コードを緯度経度に変換(gcjAdrCode2Point)

4.プロジェクトにgeocoder.ja 用の住所データベースを追加する
ソリューションエクスプローラで、”追加”−”新しいフォルダ”を選択して、
住所データベース用のフォルダを作成します。ここでは、”db”とします。
ソリューションエクスプローラで、”db”を右クリックして、”追加”−”既存の項目”を選択して、
先に作成した、geocoderja のdbフォルダ(退避したフォルダ)にある、
目的の都道府県や地域のフォルダにある、”gcj_”で始まるすべてのファイルを選択して、
「追加」ボタンを押します。


5.データベースの読込み
先に設定した、「読込」ボタンをダブルクリックして、次のコードをコピペします。

        Dim _path As String
        Dim _intsubst As Integer
        Dim _loadlevel As Integer
        Dim intKekka As Integer

        '住所データベースのパスの取得
        _path = Application.ExecutablePath.ToUpper
        _intsubst = _path.LastIndexOf("BIN")
        _path = _path.Substring(0, _intsubst)
        _loadlevel = 4

        '住所データベースの読込
        intKekka = gcjDbLoad(_path & "db", _loadlevel)

        Me.Label1.Text = "DBロード:" & intKekka.ToString


6.テキストボックスの住所から緯度経度変換
先に設定した、「変換」ボタンをダブルクリックして、次のコードをコピペします。

        Dim chArray1 As Char()
        Dim retIntPtr As IntPtr
        Dim lngRetLon As Double
        Dim lngRetLat As Double
        Dim intKekkaCode As Integer
        Dim intKekka As Integer

        'テキストボックスに入力された住所をchar配列に変換
        chArray1 = Me.TextBox1.Text.ToCharArray

        '住所から住所コードへの変換
        intKekkaCode = gcjAdrStr2Code(chArray1, retIntPtr)

        '住所から緯度経度への変換
        intKekka = gcjAdrCode2Point(retIntPtr, lngRetLat, lngRetLon)

        Me.Label1.Text = lngRetLon.ToString & " , " & lngRetLat.ToString

    End Sub

7.終了処理
先に設定した、「終了」ボタンをダブルクリックして、次のコードをコピペします。

        gcjDbEnd()
        End

8.実行/デバッグ
F5もしくは、デバッグ−デバッグ開始で、実行します。
「DB読込」ボタンを押して、Label1に0以上の値が返されたら、「変換」ボタンを押します。
結果が、Label1に表示されます。
「終了」ボタンで終了します。

9.ソースコード
下記にソースコードを置きました。
IDE:Visual Basic 2005 Express 日本語版
OS:Windows XP SP2
ソースコード一式:geocoderja.zip
  • 解凍後、geocoderja.vbproj を開きます
  • dbフォルダは空です。準備編で用意した、"gcj_" ではじまるファイルをすべてコピーします。



bugna | PostLBS | 12:24 | comments(0) | trackbacks(0) | - | - |
Comment









Trackback
URL:

09
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--
>>
<<
--