問題タブ [uwp-maps]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
uwp - オブジェクトを Map にバインドする
からマップにオブジェクトを追加しようとしてObservableCollection
いますが、何らかの理由でオブジェクトが実際の座標ではなく左上隅に表示されます。
(もちろん、このスニペットは私の中にありますMapControl
)。
ご覧のとおり、それがありEmptyConverter
、デバッグを支援するために使用しています。コンバーターにブレークポイントを配置すると、各オブジェクトが正しい座標を持っていることが示されますが、それでも間違った場所に配置されます (マップの視点でもありません。その上隅に貼り付けたような感じです)。
これに関するヒントはありますか?
c# - MapControl Template10
解決した
MapItemsControl.ItemTemplate を追加する必要があるという事実で、この問題を解決しました。これがないと、コントロールの名前以外はレンダリングされません。
したがって、次のコードを追加するだけです:
地図上にアイコンが表示されず、テキストだけが表示されるため、完全ではありません。ただし、コレクションに Image = "" を追加することで簡単に解決できます。
Template10 レイアウトで MapControl を使用しようとしています。
私が使用するコードは
MainPage.xaml
MainPageViewModel.cs
Map_Loaded 関数は、実行されたとおりに起動されます。私が問題を抱えているのは、これが通常のプロジェクトであれば、MapControl1.Center と MapControl1.MapElements.Add に直接データを設定することです。しかし、これはMVVMプロジェクトであるため、これはどのように行われるかではなく、どのように進めるかについて少し混乱しています.
Views.MainPage.MapControl1.Center = new Geopoint() のようなことをしたいのですが、明らかにうまくいきません。
追加の更新
結局のところ、これは私が思っていたのと同じくらい簡単でした。正しい順序で考えるだけの問題でした。
MapControl には、Zooming や Center などのコントロールがあります。したがって、MVVMコードの場合、これは機能します
ただし、ソースのドキュメントに記載されているように、MapItems の設定に問題がありました。
マップ上のアイテムを取得するには、MapItemsControl を追加する必要があり、そのように動作するはずです...
しかし、MainPageViewModel.xaml の私のコードはこれでは機能しません。アイテムは更新されません。
c# - MapControl マップ サイズ (ピクセル)
この記事では、実際のズーム レベルに応じてマップの合計サイズをピクセル単位で取得する方法について説明します。
式は次のようになります。
マップの幅 = マップの高さ = 256 * 2^level ピクセル
残念ながら、これはユニバーサル アプリのMapControlでは機能しないようです。まず、ZoomLevel プロパティの型は整数ではなく倍精度です (この記事のサンプルで必要とされています)。しかし、ZoomLevel が 4.0 (int --> 4) の整数の場合、式は機能しません。
ここで、MapControl.GetOffsetFromLocation メソッドを使用して、マップ サイズをピクセル単位で取得しようとしました。
これは一部のピクセルの不一致で機能しますが、この問題は実際には重要ではありません。
Surface Pro 3 で次の結果が得られました (ZoomLevel は 4.0)。
表面画面 (縮尺 1.5): 3654px
Surface 外部画面 (スケール 1.0): 3274px
これらの結果はいずれも、記事で説明されている 4096px ではありません。結果は正しく、それで作業できます。しかし、私にとっては単なる回避策であり、ZoomLevel が約 13 よりも高い場合、GetOffsetFromLocation メソッドは pE.X と pW.X (-90 と 90) に対して -1 を返します。実際の中心に近い経度では機能します。GetOffsetFromLocation には最大距離があるようです。したがって、ZoomLevel が高い場合は、より近い経度値を使用する必要があります。
それはすべて、実際には明確な解決策ではありません。だから私の質問は: UWP MapControl の正確なマップ サイズをピクセル単位で取得するための保存方法はありますか?
ありがとう!
マース
c# - MapControl はタップされた位置を取得します UWP
アプリに MapControl があり、ユーザーが記録したポイントの座標を取得したいと考えています。
しかし、私はイベントからこれを取得する方法がわかりませんprivate void mainMap_Tapped(object sender, TappedRoutedEventArgs e)
c# - ビューポートの見出しに基づいて緯度と経度を計算する
見出しに基づいてビューの緯度と経度のコーナーを計算するためのソリューションはありますか?
見出しが 0 の場合、ビューの LatLng コーナーを計算する関数があります。しかし、たとえばユーザーがマップを回転させた場合、新しい見出しに基づいてコーナーを計算する方法を見つけたいと思います。
Heading = 0 でこれを行うコードはこれです。
uwp-maps - UWP マップ コントロールで 20 を超えるズーム レベル
マップでズーム レベル 21 が必要です。MSDN の記事 (リンク=> Web サービスのオーバーレイ タイル)に従ってマップ コントロールを追加し、ページ下部の「既定のマップを置き換える」の指示に従いました。
ご覧のとおり、マップはレベル 20 までしかズームされず、それも 20 ではなく、実際には 19 にズームされています。
タイル ソースに ZoomLevelRange を設定しようとしましたが、それも役に立ちません。コード:
var dataSource = new HttpMapTileDataSource(" http://www.webservicename.com/z= {zoomlevel}&x={x}&y={y}");
MyMap.Style = MapStyle.None;
var tileSource = new MapTileSource(dataSource) {
};
MyMap.TileSources.Add(タイルソース);
カスタム タイル ソースのズーム レベルを 21 にすることはできますか?
ありがとう、
アミール