学校用の地図アプリを開発しています。私たちの学校は、独自の地図画像と座標情報を提供してくれます。そのため、マップ イメージをマップのソースとして使用し、ユーザーの位置に合わせてマップ イメージ内のポイントを表示したいと考えています。誰かアドバイスをくれませんか?
前もって感謝します。
学校用の地図アプリを開発しています。私たちの学校は、独自の地図画像と座標情報を提供してくれます。そのため、マップ イメージをマップのソースとして使用し、ユーザーの位置に合わせてマップ イメージ内のポイントを表示したいと考えています。誰かアドバイスをくれませんか?
前もって感謝します。
2 つの方法があります。
Map Controlのマップ タイルのソース (Bing から Nokia や Google など) を変更することができます。ただし、これが機能するためには、map-tiles ソースがクワッドキーなどのメカニズムを実装していることが重要です (たとえば、これを参照してください)。したがって、Bing マップ コントロールを学校のマップで使用して、コントロールの配置機能を利用できるようにする場合の質問に答えるには、これを実現するために適切に設計されたマップ タイル サーバーが必要です。 . そして、私が間違っていなければ、Bing Map コントロールを変更すると、法的な問題が発生する可能性があります。
ただし、マップの画像を提案してからポジショニングを行っていることを考えると、マップ上のピクセル XY 座標系を geo-ウォッチャー。次に、コードでこれら 2 つのシステム間で簡単なマッピングを行い、画像の上に何かを描画できます。この部分では、writeablebitmap
UI コントロールを Silverlight でオーバーレイできるという事実を使用するか、単純に使用できます。したがって、後者の場合、学校の地図の画像を含むキャンバスがあり、そのキャンバスの上に<image>
デバイスを表すものがあり、左上の座標をキャンバスに変更できます。
つまり、要約すると、geo-watcher が geo XY 座標をコードに与えるため、ピクセル XY (事前に計算したもの) へのマッピング関数があり、その XY を使用してオーバーレイを配置し<image>
たり、「ピン」を描画したりします。writeablebitmap
以前に学校の地図のイメージを描いた場所。ズームも必要な場合、このアプローチでは事態が複雑になりますが、このソリューションは簡単に拡張できます。
これは物事を少しクリアするのに役立ちますか?
以下のコメントで2番目の質問に答える:
はい、キャンバスをズームインおよびズームアウトできますが、自分でプログラムする必要があります。コントロール自体、キャンバスにはこの機能がありません。したがって、ズーム アクションのトリガー (たとえば、(+) または (-) ボタンのクリック、またはピンチ アンド ストレッチ ジェスチャ) を認識し、領域の一部をキャンバスに再描画することによってそれに反応する必要があります。領域がキャンバス全体に広がるようになりました。つまりズームです。たとえば、ズームの場合: ズーム倍率に対応し、キャンバス オブジェクトの寸法に比例する幾何学的領域を決定する必要があります。次に、壁とそれらの間のスペースを表すエッジと空のスペースが比例して大きくなるように、その部分を拡大する必要があります。また、すべてがそこから遠ざかるように、キャンバス上で修正するその領域の中心点を決定する必要があります。したがって、適切なズーム効果が得られます。この時点で、地理座標のマッピング関数をピクセル XY に再調整して、対象の「ピン」またはオブジェクトを新しくレンダリングされたサーフェスに正確かつ正確に描画できるようにする必要があります。
これが非常に手間がかかるように見えることは理解していますが、必要な仕組みを理解すれば簡単です。
もう 1 つの簡単なオプションは、Web ブラウザー コントロールで SVG (スケーラブル ベクター グラフィックス) を使用することです。ピクセル xy システムへの地理座標が必要になることに注意してください。ただし、このアプローチでは、SVG (拡大縮小操作のための変換機能を備えています) と、SVG をレンダリングし、ズームインのジェスチャ処理を行うことができる Web ブラウザーの組み合わせで無料でズームを取得できます。地図。そのためには、SVG へのビットマップである学校の地図を再作成する作業のコストがかかると思います。Inkscapeのようなツールがありますこれを使用して、マップの画像を読み込み、その上にアウトラインをトレースできます。次に、そのアウトライン ドキュメントを SVG として保存できます。実際、Canvas メソッドに取り組む前に、このアプローチがあなたのニーズにとって最も簡単な方法だと思うので、このアプローチをお勧めします。