地図

Map Viewやクエリから、緯度と経度のDataverse行をプロットし、自分のマーカー、線、面積、円の隣に配置します。BlazorやReactと同じコンポーネントを選んだプロバイダー(Azure Maps、Esri、Google、OpenStreetMap、または任意のMapLibreスタイル)によって作成されます。

事務所、ルートおよびエリア

12のオフィスがマーカーとして、ルート、配送ゾーン、販売地域として配置されています。近接したマーカーはクラスターに集まり、クリックするとズームインします。オフィスをクリックするとポップアップが表示され、こちらはページ自身のコンテンツです。ルートやエリアは開かれていません。ページはクリックに応じて応答し、地図の下の線が聞いた内容を示しています。

Reactの例 ブレイザーの例 React TypeScript Razor
マップを読み込み中...

最終クリック日: まだ何もありません

Dataverseからのアカウントと連絡先

アクティブなアカウントは、関係タイプで色付けされたか、スイッチで連絡先を表示し、訪問者の権限を持つFetchXMLクエリで読み取り、その経度と緯度に配置されます。クリックするとポップアップが表示されます。行名の下にあるクエリの他の列で、ページが開きます。地図上のボックスはポータルの提供者アドレスを見つけてピン留めします。

Reactの例 ブレイザーの例 React TypeScript Razor
  • 顧客
  • 投資家
  • パートナー
  • 展望
  • 転売業者
  • ベンダー
マップを読み込み中...

最終クリック日: まだ何もありません
住所が見つかりました: 地図上のボックスで探してみてください

提供者

ポータルの設定ではプロバイダー名と各プロバイダーのキーが PowerPortalsPro:Maps セクションに記載されているため、マップにはキー名が記載されず、どのページにもキーが入っていません。マーカー、クラスタ、ポップアップ、クリックはすべてのプロバイダーで同じように動作します:

  • Azure Maps:キーは全くありません。ポータルは独自の識別でサインインします(下記)。その帰属は、条件が求められるときに示されています。
  • Esri: Esri:ApiKeyのArcGIS APIキー、そして道路の代わりに任意のArcGISベースマップスタイルを使います。
  • Google: Google:ApiKeyのMaps JavaScript APIキーと、Google Cloudでスタイリングされた地図の地図IDです。
  • OpenStreetMap:キーは不要で、設定されていない場合はプロバイダーが開発と軽度使用に適用されます。OpenStreetMapのタイルポリシーは大量使用を除外しています。本番環境では OpenStreetMap:TileUrl で自分のタイルサーバーに名前を付けてください。
  • MapLibre:MapTiler、OpenFreeMap、Stadia、またはご自身のサーバーなど、 MapLibre:StyleUrl または MapLibre:TileUrlのMapLibreスタイルやラスタタイルURL。

EsriとGoogleのキーはビューワーのブラウザに届き、すべてのウェブマップと同様にプロバイダーに送信されます。それぞれをプロバイダーのコンソール内のポータルアドレスに制限してください。

ページはプロバイダーの名前を付けるだけでポータル以外のものを使い、見た目だけを表示します:スタイル、地図ID、争われている境界のビューなどです。設定されていないのは設定上の問題です。ダークテーマではマップがプロバイダーのダークスタイルに切り替わります。 UsePortalTheme それをオフにします。

React Blazor

キーなしのAzure Maps

Azure MapsマップはEntraトークンでサインインし、ポータルはDataverseに接続する独自のIDに割り当てられるため、Azure Mapsキーは不要でブラウザに届く必要もありません。そのIDはAzure Mapsアカウントの Azure Maps Data Reader の役割を与え、それ以上のものは設定せず、 AzureMaps:ClientId アカウントの認証ページでクライアントIDに設定してください。

すべてのビューアはトークンを保持しているため、その役割で許可される範囲のみを実行できます。アカウントの許可された発信元もポータルのアドレスに限定してください。マップは新しいトークンの有効期限前に要求します。ページが一度だけリクエストすると、1人のビューアに1 PowerPortalsPro:Maps:RateLimit 分間に120トークンが渡されることがあります。サインインしていない訪問者は住所でカウントされ、そのアドレスは同じオフィスの接続先の全員が共有します。

Dataverse 行

ビューやFetchXMLクエリを付与すると、緯度と経度を持つ各行はテーブルのプライマリ名で名付けられたマーカーになります。行はグリッドと同様にユーザーの許可で読み込まれ、クリックするとそのビューの列が表示されます。

React Blazor

両方の座標でない行はクエリから除外されます。地図は特に指定 MaxRows がない限り1,000行(最大5,000行)を読み取り、それ以上の場合は地図にメモを残します。

座標のない行は、保存した際にアドレスから埋めることができます:ジ オコーディングを参照してください。

いくつかの表

MultiTable(React: multiTable)では、マップはサーバーがForMapsでマッピングするすべてのテーブルの行を示し、各テーブルはそれぞれの色で凡例付きを示します。レジストレーションは行の緯度と経度を持つ列の名前を付け、これらは常に読み込まれます。DefaultTables最初に表示されるテーブルを選択し、表示可能なものをTablesします。Regardingレコードに関する行に絞り込みます。

座標が AddMapCoordinatesで登録されるか、 AddGeocodingで埋められたテーブルは、 ForMaps() のみで地図が登録されます:ジ オコーディングを参照してください。

React Blazor

マップ上のツールバーがビューを選択します:すべてのテーブル、または AddMultiTableView と ForMaps()に登録された複数のテーブルのビューです。 ViewIds (React: viewIds)は、名前を付けた登録ビューのみを順番で提供し、開く時のビューを DefaultViewId (defaultViewId)提供します。フィルターメニューではテーブルのオン・オフを切り替え、各テーブルのフィルターを編集します。 AllowSavedViews (React: allowSavedViews)では、サインインしたユーザーはマップに表示されるものを自分のビューとして保存できます: 詳細は「保存済みビュー」を参照してください。

場所の近くで記録を探す

AllowNearSearch(React: allowNearSearch)では、複数のテーブルの地図にツールバーに「近づき」ボタンがあります。場所(地図提供者の検索で住所、ブラウザが共有を求める訪問者の位置)を見つけ、地図は選んだ距離内の行のみを表示します。すべてのテーブルで一番近い順に。円が描かれ、地図がそれに適合し、各行のポップアップで距離が表示されます。NearDistances(nearDistances)は提供される距離を設定します。設定がなければ1、5、10、25、50、100、NearDistance(nearDistance)は開始地点、25は設定がなければ、NearDistanceUnit(nearDistanceUnit)はマイル、デフォルト、またはキロメートルで始まる。訪問者は切り替え可能です。Nearby デモでご覧いただけます。

React Blazor

各テーブルは登録座標で読み取り、訪問者の許可を得て、サーバーは円の周りのマスを読み取り、行を地面からの距離で保持し、最も近い行を返します。場所の近くで検索すると最大500行、つまり最も近い行が保持され、地図の凡例はそれ以上があったと示します。 NearSearchOptions.MaximumMatches はそれを増減し、最大5,000行まで調整します。テーブルの座標を読まない訪問者は、その列を一つも見つけられません。

ポップアップとクリック音

アイテム、マーカー、線、エリア、円をクリックすると、アイテム、そのデータ、クリックされた場所が OnItemClick 上がり、その上にポップアップが表示されます。ポップアップはFluentカードで、Blazorではテンプレート、Reactではレンダリング関数など、あなた自身のコンテンツが表示されます。マップ自体をクリックすると、その位置が OnMapClick 上がります。

React Blazor

クリックに答えるには、自分で行うように、レコードのページを開くか、地域を選択し、クリックで PreventDefault() (ReactでpreventDefault() )と呼びますが、マップはポップアップを表示しません。 ShowPopups falseに設定すると、すべてのアイテムでポップアップがオフになります。

React Blazor

行のポップアップ見出しは、そのテーブルのページ( AddRecordPage で登録されたページ(記録 ページ参照)にリンクします。これは1つまたは複数のテーブルのマップ上で。 RecordUrl 、行のIDの代わりに {0} 、テーブルのURLを {1} します。 ShowRecordLinks (React: showRecordLinks)をfalseに設定するとリンクが無効になります。自分のアイテムがその Urlにリンクします。Reactでは、 onNavigate ルーターでリンクをたどります。

ある場所にあるマーカー、例えばある住所の連絡先はズームしてもバラされず、そのクラスタがそれらを一覧にします。

列ごとの色

ColorColumn 各行のマーカーは、選択肢、ステータス、ステータス理由、またはイエス/ノーの列で色を付けます。例えば、Dataverseのオプションの色、またはFluentのパレットの色がない場合、マップ上のオプションの凡庸な表示付きです。値のない行はグレーです。その他のルールについては、Blazorの RecordColorSelector とReactの recordColor 関数で各行に独自の色を与えます。

React Blazor

住所検索

ShowAddressSearch 地図の隅に検索ボックスを配置します。ポータルの提供者で先に表示される場所と住所を特定し、選択したものをピン留めします。 OnAddressSelected ページに場所を渡し、検索がクリアされると無効化します。 AddressSearchCountries 一部の国に保存し、 GoToAddressAsync (Reactの参照goToAddress )コードから検索します。

React Blazor

Azure Maps、Esri、Googleは訪問者タイプとして場所を提案します。GoogleのキーはPlaces API(New)を有効にする必要があり、Esriのキーはジオコーディング権限を持っています。OpenStreetMapとMapLibreのマップはOpenStreetMapのNominatimを検索しますが、使用ポリシーでは軽度の使用のみが許可されており、誰かがタイプする際には決して使えません。Enterキーを押すと検索します。 OpenStreetMap:GeocoderUrl または MapLibre:GeocoderUrl で自分のNominatimサーバー名を付けてください。

Address (Reactのaddress )は検索ボックスのない1つのアドレスを表示します。地図は描画された後、同じ検索でそれを見つけ、変更された際に再びピン留めしてズームします。スピナーは探している間に表示し、見つからないときはメッセージを表示します。座標のないアドレスに対して AddressDisplayValueの地図ピン が開くものです。

React Blazor

印刷

ShowPrintButton (ReactでshowPrintButton )は、 MultiTable マップのツールバー、または地図右上隅に「印刷」ボタンを追加し、地図のピン、凡例、ポップアップ、プロバイダーの帰属を表示します。 PrintTitle はその上の見出しで、 PrintEntries はピンのラベルの隣に記録をリストアップします。マーカーの Label は点の代わりにピンに描かれ、停留所に番号を付けるとルートシートとして読み取られます。 PrintAsync() (React参照のprint() )はページ固有のボタンから印刷され、 OnPrintChanged (onPrintChange)は地図をいつ印刷できるか、画像として保存できるかどうかを指示し、そのボタンが続くようにします。

React Blazor

Azure Maps、Esri、OpenStreetMap、MapLibreの各マップは地図の画像として印刷されるため、地図の周囲のページは省かれ、地図は動きません。同じボタンでその画像はPNGファイル(SaveImageAsyncまたは saveImage())として保存されます。画像にはタイトルとフィールド、または表示されたマーカー付きのポップアップが表示されます。ページ固有の内容(PopupTemplateや renderPopup)を示すポップアップは、そのアイテムのタイトルとともに描かれます。Googleマップは画像にコピーできないため、ポップアップを含めてそのまま印刷され、残りのページは印刷から除外され、保存する画像はありません。自分のプロバイダーは、その表面が captureを実装すると画像として印刷されます。

プロバイダー独自の特徴

NativeOptions 地図作成時にプロバイダー自身の地図に渡されます。例えばGoogleのストリートビューをオンにしたり、MapLibreの地図をスクロールホイールだけでズームしたりできます(cooperativeGestures: false);デフォルトではCtrlが必要です。GoogleのスクロールページではCtrlキーなので、ページはスクロールして通り過ぎます。プロバイダーの地図オブジェクトはあなたのJavaScriptでも利用可能です。Blazorの GetNativeMapAsync 、React参照のReact native 。

React Blazor

ご自身のプロバイダー

プロバイダーはベースマップを描き、形状を描き、要素を配置し、クリックや移動を報告します。その他はすべてマップのものです。名前で登録し、そのマップの設定で名前を付けます。

Blazorでは、ページ上のJavaScriptに登録した名前で CustomMapProvider を使います。

Reactのセットアップ

Google以外のすべてのプロバイダーを描画するMapLibreは、独自のファイルからワーカースクリプトを読み込みます。 maplibre-gl を @powerportalspro/react-maps隣にインストールし、地図を描く前に一度だけバンドラーがワーカーをどこに置いたかを伝えてください。Blazorはセットアップは不要です。

反応してください ブレイザー

Map クラス

パラメータ

名称
種類
デフォルト
概要
Addressstring?
AddressSearchCountriesIReadOnlyList<string>?
AllowFilteringbool
False
AllowNearSearchbool
False
AllowSavedViewsbool
False
CenterMapPosition?
Clusterbool
True
ColorColumnstring?
DefaultTablesIEnumerable<string>?
DefaultViewIdGuid?
FetchXmlstring?
FiltersIReadOnlyList<QueryFilter>?
FitItemIdsIReadOnlyList<string>?
Heightstring
400px
ItemsIReadOnlyList<MapItem>?
LatitudeColumnstring
address1_latitude
LongitudeColumnstring
address1_longitude
MapStyleMapStyle
Road
MaxRowsint
1000
MultiTablebool
False
NativeOptionsIReadOnlyDictionary<string, Object>?
NearDistancedouble?
NearDistancesIReadOnlyList<double>?
NearDistanceUnitDistanceUnit
Miles
PopupTemplateRenderFragment<MapItem>?
PrintEntriesIReadOnlyList<MapPrintEntry>?
PrintEntriesProviderFunc<IReadOnlyList<MapPrintEntry>>?
PrintTitlestring?
ProviderMapProvider?
RecordColorstring?
RecordColorSelectorFunc<TableRecord, string>?
RecordUrlstring?
RecordUrlSelectorFunc<TableRecord, string>?
RegardingTableRecordReference?
SavedViewsKeystring?
ShowAddressSearchbool
False
ShowLegendbool
True
ShowPopupsbool
True
ShowPrintButtonbool
False
ShowRecordLinksbool
True
SignInUrlstring
Account/Login
TablesIEnumerable<string>?
Titlestring?
TitleColumnstring?
UsePortalThemebool
True
ViewIdGuid?
ViewIdsIEnumerable<Guid>?
Widthstring
100%
Zoomdouble?
名称: Address
種類: string?
名称: AddressSearchCountries
種類: IReadOnlyList<string>?
名称: AllowFiltering
種類: bool
デフォルト: False
名称: AllowNearSearch
種類: bool
デフォルト: False
名称: AllowSavedViews
種類: bool
デフォルト: False
名称: Center
種類: MapPosition?
名称: Cluster
種類: bool
デフォルト: True
名称: ColorColumn
種類: string?
名称: DefaultTables
種類: IEnumerable<string>?
名称: DefaultViewId
種類: Guid?
名称: FetchXml
種類: string?
名称: Filters
種類: IReadOnlyList<QueryFilter>?
名称: FitItemIds
種類: IReadOnlyList<string>?
名称: Height
種類: string
デフォルト: 400px
名称: Items
種類: IReadOnlyList<MapItem>?
名称: LatitudeColumn
種類: string
デフォルト: address1_latitude
名称: LongitudeColumn
種類: string
デフォルト: address1_longitude
名称: MapStyle
種類: MapStyle
デフォルト: Road
名称: MaxRows
種類: int
デフォルト: 1000
名称: MultiTable
種類: bool
デフォルト: False
名称: NativeOptions
種類: IReadOnlyDictionary<string, Object>?
名称: NearDistance
種類: double?
名称: NearDistances
種類: IReadOnlyList<double>?
名称: NearDistanceUnit
種類: DistanceUnit
デフォルト: Miles
名称: PopupTemplate
種類: RenderFragment<MapItem>?
名称: PrintEntries
種類: IReadOnlyList<MapPrintEntry>?
名称: PrintEntriesProvider
種類: Func<IReadOnlyList<MapPrintEntry>>?
名称: PrintTitle
種類: string?
名称: Provider
種類: MapProvider?
名称: RecordColor
種類: string?
名称: RecordColorSelector
種類: Func<TableRecord, string>?
名称: RecordUrl
種類: string?
名称: RecordUrlSelector
種類: Func<TableRecord, string>?
名称: Regarding
種類: TableRecordReference?
名称: SavedViewsKey
種類: string?
名称: ShowAddressSearch
種類: bool
デフォルト: False
名称: ShowLegend
種類: bool
デフォルト: True
名称: ShowPopups
種類: bool
デフォルト: True
名称: ShowPrintButton
種類: bool
デフォルト: False
名称: ShowRecordLinks
種類: bool
デフォルト: True
名称: SignInUrl
種類: string
デフォルト: Account/Login
名称: Tables
種類: IEnumerable<string>?
名称: Title
種類: string?
名称: TitleColumn
種類: string?
名称: UsePortalTheme
種類: bool
デフォルト: True
名称: ViewId
種類: Guid?
名称: ViewIds
種類: IEnumerable<Guid>?
名称: Width
種類: string
デフォルト: 100%
名称: Zoom
種類: double?

イベント

名称
種類
概要
OnAddressSelectedEventCallback<MapPlace>
OnErrorEventCallback<string>
OnItemClickEventCallback<MapItemClickEventArgs>
OnMapClickEventCallback<MapClickEventArgs>
OnPrintChangedEventCallback<MapPrintState>
OnViewChangedEventCallback<MapView>
名称: OnAddressSelected
種類: EventCallback<MapPlace>
名称: OnError
種類: EventCallback<string>
名称: OnItemClick
種類: EventCallback<MapItemClickEventArgs>
名称: OnMapClick
種類: EventCallback<MapClickEventArgs>
名称: OnPrintChanged
種類: EventCallback<MapPrintState>
名称: OnViewChanged
種類: EventCallback<MapView>

方法

名称
パラメータ
種類
概要
ClearAddressAsyncTask
ClosePopupAsyncTask
FitToItemsAsyncIEnumerable<string> ids
Task
GetMapSettingsAsyncstring provider
Task<MapSettingsResponse>
GetNativeMapAsyncTask<IJSObjectReference>
GetViewAsyncTask<MapView>
GoToAddressAsyncstring text
Task<MapPlace>
NotifyAddressSelectedAsyncMapPlace place
Task
NotifyAddressStatusAsyncstring status
Task
NotifyClusterClickAsyncstring[] ids
MapPosition position
Task
NotifyErrorAsyncstring kind
string message
Task
NotifyItemClickAsyncstring id
MapPosition position
Task
NotifyMapClickAsyncMapPosition position
Task
NotifyViewChangedAsyncMapView view
Task
OpenPopupAsyncstring id
Task
PrintAsyncTask
SaveImageAsyncstring fileName
Task<bool>
SetCameraAsyncMapCamera camera
bool animate
Task
名称: ClearAddressAsync
種類: Task
名称: ClosePopupAsync
種類: Task
名称: FitToItemsAsync
パラメータ: IEnumerable<string> ids
種類: Task
名称: GetMapSettingsAsync
パラメータ: string provider
種類: Task<MapSettingsResponse>
名称: GetNativeMapAsync
種類: Task<IJSObjectReference>
名称: GetViewAsync
種類: Task<MapView>
名称: GoToAddressAsync
パラメータ: string text
種類: Task<MapPlace>
名称: NotifyAddressSelectedAsync
パラメータ: MapPlace place
種類: Task
名称: NotifyAddressStatusAsync
パラメータ: string status
種類: Task
名称: NotifyClusterClickAsync
パラメータ: string[] ids
MapPosition position
種類: Task
名称: NotifyErrorAsync
パラメータ: string kind
string message
種類: Task
名称: NotifyItemClickAsync
パラメータ: string id
MapPosition position
種類: Task
名称: NotifyMapClickAsync
パラメータ: MapPosition position
種類: Task
名称: NotifyViewChangedAsync
パラメータ: MapView view
種類: Task
名称: OpenPopupAsync
パラメータ: string id
種類: Task
名称: PrintAsync
種類: Task
名称: SaveImageAsync
パラメータ: string fileName
種類: Task<bool>
名称: SetCameraAsync
パラメータ: MapCamera camera
bool animate
種類: Task