SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ComponentOne Studio)

ComponentOne Studioの地図コンポーネント+オープンデータでマッシュアップしよう

  • このエントリーをはてなブックマークに追加

マーカーのカスタマイズ

 C1Mapsコンポーネントでは地図マーカーとして特殊な形を描画したいときは、C1VectorPlacemarkのGeometryにXAMLのパス定義を指定します。今回のサンプルで表示するのはAEDの情報なのでハート形マーカーとして、位置をハートの最下部の頂点で指し示すようにカスタマイズしてみましょう。

パスの作成

 地道にパスを作成してもいいのですが、Syncfusion Metro Studio 2を使えば登録されているアイコンからパス定義を生成できるので、今回はこの方法でパスを作成します。

図6 マーカーのXAML定義を生成する
図6 マーカーのXAML定義を生成する

XAMLへの設定

 C1VectorPlacemarkにGeometryパラメタを追加して、そこにパス定義を設定します。

リスト4 MainWindow.xamlより抜粋
        :
      (中略)
        :
<Custom:C1VectorPlacemark 
    Fill="Red" Stroke="Red"
    LabelPosition="Top"
    Foreground="Red"
    GeoPoint="{Binding LatLng}"
    Geometry="M7.4166234,16.197001L13.497334,16.345396 …(中略)…E-06z" />
        :
      (中略)
        :

マーカーの先端位置調整

 ハートマークの下部の先端は、Y軸方向最下層でありX軸方向は中心となっています。そこでRenderTransform定義を追加して位置をずらしたいと思います。手作業でXAMLを変更してもいいのですが、このようなときに便利なのがBlendです。

図7 マーカーの先端を位置情報に合わせる
図7 マーカーの先端を位置情報に合わせる

 ついでに大きさも縦横0.5倍になるように調整しておきましょう。

リスト5 MainWindow.xamlより抜粋
        :
      (中略)
        :
<Custom:C1VectorPlacemark 
    Fill="Red" Stroke="Red"
    LabelPosition="Top"
    Foreground="Red"
    GeoPoint="{Binding LatLng}"
    Geometry="M7.4166234,16.197001L13.497334,16.345396 …(中略)…E-06z">
    <Custom:C1VectorPlacemark.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
            <TranslateTransform Y="-20" X="-10"/>
        </TransformGroup>
    </Custom:C1VectorPlacemark.RenderTransform>
        :
      (中略)
        :

実行

 カスタマイズしたマーカーが想定した位置に表示されるかを確認します。

図8 カスタマイズマーカーでのサンプル実行
図8 カスタマイズマーカーでのサンプル実行

まとめ

 意外にもBing MapのWPF対応は、2012/1/12に提供されたBing Maps Windows Presentation Foundation (WPF) Control, Version 1.0 が最新版のようです。デスクトップアプリとして作成するのであれば、描画速度やストアアプリと同じXAML(利用できるパラメタなどに違いはありますが)で画面定義ができてBindingが使える点から考えても、WindowsフォームではなくWPFだと思います。ストアアプリではなくデスクトップアプリとしてオープンデータを活用するのであれば、ぜひWPFとComponentOne Studioを組み合わせて使いやすいアプリを設計構築してみてはいかがでしょうか。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ComponentOne Studio)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8118 2014/11/07 15:23

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング