Back to Devexpress

TdxMapControlInformationProviders.Add(TdxMapControlInformationProviderClass) Method

vcl-dxmapcontrolinformationprovider-dot-tdxmapcontrolinformationproviders-dot-add-x28-dxmapcontrolinformationprovider-dot-tdxmapcontrolinformationproviderclass-x29.md

latest4.5 KB
Original Source

TdxMapControlInformationProviders.Add(TdxMapControlInformationProviderClass) Method

Creates an auxiliary map information provider of the required type and adds the provider to the collection.

Declaration

delphi
function Add(AItemClass: TdxMapControlInformationProviderClass): TdxMapControlInformationProvider;

Parameters

NameTypeDescription
AItemClassTdxMapControlInformationProviderClass

The reference to the required information provider type class.

|

Returns

TypeDescription
TdxMapControlInformationProvider

The created information provider.

To access all public API members of the created map information provider, cast the returned object to the corresponding terminal TdxMapControlInformationProvider class descendant (AItemClass).

|

Remarks

Call the Add function to create any supported auxiliary map information provider and add it to the collection. All created information providers are accessible through the Items property.

Code Example: Create and Configure Azure Maps Information Providers

The following code example implements a procedure that accepts an Azure Maps account key, and creates and configures all Azure Maps information provider components:

delphi
uses
  dxAzureMapInformationProviders; // Declares all Azure Maps information provider classes
// ...

procedure TMyForm.CreateAzureMapsInformationProviders(const AAzureKey: string);
var
  AProviders: TdxMapControlInformationProviders;
  AProvider: TdxMapControlAzureMapInformationProvider;
  I: Integer;
begin
  AProviders := dxMapControl1.InformationProviders;
  AProviders.BeginUpdate; // Initiates the following batch change
  try
    // Create all Azure Maps information providers
    AProviders.Add(TdxMapControlAzureMapGeocodeProvider);
    AProviders.Add(TdxMapControlAzureMapGeolocationProvider);
    AProviders.Add(TdxMapControlAzureMapReverseGeocodeProvider);
    AProviders.Add(TdxMapControlAzureMapRouteProvider);
    for I := 0 to AProviders.Count - 1 do // Iterates through all created information providers
    begin
      AProvider := AProviders.Items[I] as TdxMapControlAzureMapInformationProvider;
      AProvider.AzureKey := AAzureKey; // Assigns the same Azure Maps account key to all providers
    end;
  finally
    AProviders.EndUpdate; // Calls EndUpdate regardless of the batch operation's success
  end;
end;
cpp
#include "dxAzureMapInformationProviders.hpp" // Declares all Azure Maps information provider classes
// ...

void __fastcall TMyForm::CreateAzureMapsInformationProviders(const UnicodeString &AAzureKey)
{
  TdxMapControlInformationProviders *AProviders;
  TdxMapControlAzureMapInformationProvider *AProvider;

  AProviders = dxMapControl1->InformationProviders;
  AProviders->BeginUpdate(); // Initiates the following batch change
  try
  {
    // Create all Azure Maps information providers
    AProviders->Add(__classid(TdxMapControlAzureMapGeocodeProvider));
    AProviders->Add(__classid(TdxMapControlAzureMapGeolocationProvider));
    AProviders->Add(__classid(TdxMapControlAzureMapReverseGeocodeProvider));
    AProviders->Add(__classid(TdxMapControlAzureMapRouteProvider));
    for(int i = 0; i < AProviders->Count; i++) // Iterates through all created information providers
    {
      AProvider = dynamic_cast<TdxMapControlAzureMapInformationProvider*>(AProviders->Items[i]);
      AProvider->AzureKey = AAzureKey; // Assigns the same Azure Maps account key to all providers
    }
  }
  __finally
  {
    AProviders->EndUpdate(); // Calls EndUpdate regardless of the batch operation's success
  }
}

See Also

TdxMapLayers.Add Function

TdxMapControlInformationProviders Class

TdxMapControlInformationProviders Members

dxMapControlInformationProvider Unit