現在位置の近くにある宿を検索するサンプルプログラム
Bing Maps Keyの取得方法
Bing Mapsを使用するには下記URLのBing Maps Account Centerに行って専用のライセンスキーを取得する必要があります。
→ Bing Maps Account Center
Windows Live IDを持ってない方はCreateからWindows Live IDを作成してSign Inしてください。筆者はIDを持っているので、Sign Inから入ります。
表示される画面の左にあるCreate or view keysをクリックします。
Create keyの画面が表示されますので、必要な項目を入力してSubmitしてください。筆者はすでにキーを持っているため、キーが表示されています。Key typeはBasicとなっています。BasicでPublic websiteの場合は、「アプリケーションが制限なしに利用され、500,000 のトランザクションの任意の種類の 12 ヶ月の期間内を超えない、公開ウェブサイトです。」となっているようです。
詳細については、前回の「現在位置の住所取得」を参照してください。
リスト1のレイアウトは図8のようになります。
次に、現在位置を取得する必要があるため、ソリユーションエクスプローラー内の、Package.manifestファイルをダブルクリックして開きます。
「場所」へのアクセス許可
「機能」タブ内の「機能:」にある「場所」にチェックを付けます(図9)。
「じゃらんAPI」の使用
今回は、下記URLの「じゃらんWebサービス/じゃらん宿表示API」を使用します。
→ じゃらんWebサービス/じゃらん宿表示API アドバンス
このAPIを使用するには、「じゃらん」のAPIキーが必要です。下記のURLから、「会員ID(メールアドレス)」を入力して、「同意して次へ」ボタンをクリックしてください。登録したメールアドレスに「じゃらん」よりメールが届きますので、その指示に従って、APIキーを取得してください。
→ じゃらんWebサービス/アカウント登録
「空白のページ」の作成(WebBrowserPage.xaml)
次に、宿の詳細データをブラウザで表示するためのページを作成します。
VS2012のメニューの「プロジェクト(P)/新しい項目の追加(W)」と選択します。「新しい項目の追加」ダイアログボックスが開きますので、「空白のページ」を選択します。「名前(N)」にWebBrowserPage.xamlと入力し、[追加(A)]ボタンをクリックします。
コントロールの配置
書き出されるXAMLはリスト2、レイアウトは図11のようになります。
リスト2 書き出されたXAMLコード(WebBrowser.xaml)
- (1)Controlsという名前空間が追加されている。
- (2)名前がWebBrowser1というWebBrowserコントロールを配置した。
<Page xmlns:Controls="using:WinRTXamlToolkit.Controls"(1) x:Class="AccommodationSearch.WebBrowserPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:AccommodationSearch" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Controls:WebBrowser x:Name="WebBrowser1"/>(2) </Grid> </Page>
次に、ソリューションエクスプローラー内のMainWindow.xamlを展開して表示される、MainWindow.xaml.vbをダブルクリックしてリスト3のコードを記述します。
ロジックコードを記述する
リスト3 (MainWindow.xaml.vb)
Option Strict On
コンピュータの地理的位置にアクセスできるようにするクラスの含まれる、Windows.Devices.Geolocation名前空間をインポートします。
Imports Windows.Devices.Geolocation
Bing Mapsに関するクラスの含まれる、Bing.Maps名前空間をインポートします。
Imports Bing.Maps
UIに関するクラスの含まれるWindows.UI名前空間をインポートします。PushPinの色を設定する場合等に必要です。
Imports Windows.UI
アプリケーションウインドウやウインドウ対話を作成し管理するサポートと、ウインドウ上の入力イベントを処理するクラスの含まれる、Windows.UI.Core名前空間をインポートします。
Imports Windows.UI.Core
最新のHTTPアプリケーション用のプログラミング インターフェイスを提供するクラスの含まれる、System.Net.Http名前空間をインポートします。
Imports System.Net.Http
コンテキストメニューおよびメッセージダイアログのサポートを提供するクラスの含まれる、Windows.UI.Popups名前空間をインポートします。
Imports Windows.UI.Popups Public NotInheritable Class MainPage Inherits Page
現在の地理的位置にアクセスするクラスである、Geolocatorクラスのメンバ変数myGeolocatorを宣言します。
Dim myGeolocator As Geolocator
Windowsランタイムコアイベントメッセージディスパッチャを提供するクラスである、CoreDispatcherクラスのメンバ変数、myCoreDispacherを宣言します。
Dim myCoreDispacher As CoreDispatcher
YahooのアプリケーションIDで初期化された、定数メンバ変数AppIDを宣言します。
Const AppID As String = "YahooのアプリケーションID"
「じゃらん」のAPIキーで初期化された、定数メンバ変数HotelAppIDを宣言します。
Const HotelAppID As String = "じゃらんのAPIキー"
ページがアクティブになった時の処理
myGeolocatorオブジェクトが作成されていない場合は、新しいGeolocatorクラスのインスタンスmyGeolocatorオブジェクトを作成します。
場所認識の精度レベルを表す、DesiredAccuracy プロパティにはDefaultを指定しておきます。Default以外にHighがありますが、パフォーマンスが低下する恐れがありますので、Defaultを指定しています。
Window.Current.CoreWindow.Dispatcherで、現在アクティブになっている、ウインドウの内部コアオブジェクトのイベントディスパッチャを取得して、myCoreDispacherで参照します。
AddHandlerステートメントで、場所が更新された時のPositionChangedイベント時のイベントハンドラ、myGeolocator_PositionChangedを追加します。
同じく、AddHandlerステートメントで、更新された場所を提供するGeolocatorの機能が変更された時に発生する、StatusChanged時のイベントハンドラ、myGeolocator_StatusChangedを追加します。
Protected Overrides Sub OnNavigatedTo(e As Navigation.NavigationEventArgs) If myGeolocator Is Nothing = True Then myGeolocator = New Geolocator myGeolocator.DesiredAccuracy = PositionAccuracy.Default myCoreDispacher = Window.Current.CoreWindow.Dispatcher End If AddHandler myGeolocator.PositionChanged, AddressOf myGeolocator_PositionChanged AddHandler myGeolocator.StatusChanged, AddressOf myGeolocator_StatusChanged End Sub
現在位置の近くにある宿を検索するプログラム