Back to Devexpress

TdxMapControlAzureMapGeolocationProvider Class

vcl-dxazuremapinformationproviders-3e21d3d3.md

latest11.5 KB
Original Source

TdxMapControlAzureMapGeolocationProvider Class

An Azure Maps Geolocation information provider.

Declaration

delphi
TdxMapControlAzureMapGeolocationProvider = class sealed(TdxMapControlAzureMapInformationProvider)

Remarks

The TdxMapControlAzureMapGeolocationProvider component allows you to use Azure Maps Geolocation services to obtain an ISO country code based on the specified IP address.

Azure Maps Account

To use Microsoft Azure Maps® services, you need to create an Azure Maps account and obtain a key. Assign the account key to the AzureKey property to configure the information provider.

Main API Members

The list below outlines key members of the TdxMapControlAzureMapGeolocationProvider class. These members allow you to access Azure Maps services and an ISO country code that corresponds to the specified IP address.

Server-Related API Members

AzureKey Required. Specifies the account key required to use the Azure geolocation provider.CancelRequestsCancels pending asynchronous queries to Azure Maps servers.CreateQueryParamsCreates an information container required to send a geolocation query to an Azure Maps server.Execute | ExecuteAsyncSend a query created by a CreateQueryParams function call.OnResponseAllows you to receive and process a server response after an asynchronous query.

Collection-Related API Members

CollectionProvides access to the parent collection.DisplayNameSpecifies the information provider’s name displayed in the design-time collection editor dialog.IndexSpecifies the information provider’s index in the parent collection.IDReturns the component’s unique identifier.

Other Azure Maps Information Providers

TdxMapControlAzureMapGeocodeProviderAn Azure Maps Geocode information provider.TdxMapControlAzureMapReverseGeocodeProviderAn Azure Maps Reverse Geocode information provider.TdxMapControlAzureMapRouteProviderAn Azure Maps Route information provider.

Code Examples

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
  }
}

Obtain Country ISO Code by IP Address

The following code example implements a function that uses a configured information provider to return a country ISO code that corresponds to the specified IP address:

delphi
uses
  dxAzureMapInformationProviders; // Declares TdxMapControlAzureMapGeolocationProvider
// ...

function TMyForm.GetCountryISOCode(const AIPAddress: string): string;
var
  AParams: IdxAzureMapGeolocationQueryParams;
  AResponse: TdxAzureMapGeolocationRequestResponse;
begin
  AParams := dxMapControl1AzureMapGeolocationProvider1.CreateQueryParams;
  AParams.IP := AIPAddress;
  dxMapControl1AzureMapGeolocationProvider1.Execute(AParams, AResponse);
  if AResponse <> nil then
  begin
    if AResponse.IsSuccess then
      AResult := AResponse.CountryRegion.IsoCode
  end;
end;
cpp
#include "dxAzureMapInformationProviders.hpp" // Declares TdxMapControlAzureMapGeolocationProvider
// ...

UnicodeString __fastcall TMyForm::GetCountryISOCode(const UnicodeString &AIPAddress)
{
  _di_IdxAzureMapGeolocationQueryParams AParams;
  TdxAzureMapGeolocationRequestResponse *AResponse;
  UnicodeString AResult;

  AParams = dxMapControl1AzureMapGeolocationProvider1->CreateQueryParams();
  AParams->IP = AIPAddress;
  dxMapControl1AzureMapGeolocationProvider1->Execute(AParams, AResponse);
  if(AResponse != nullptr)
  {
    if(AResponse->IsSuccess)
      AResult = AResponse->CountryRegion->IsoCode;
  }
  return AResult;
}

Indirect TdxMapControlAzureMapGeolocationProvider Class References

The following public API members reference the TdxMapControlAzureMapGeolocationProvider class as a TdxMapControlInformationProvider object:

TdxMapControlInformationProviders.AddCreates an auxiliary map information provider of the required type and adds the provider to the collection.TdxMapControlInformationProviders.ItemsProvides indexed access to stored map information provider components.

Direct TdxMapControlAzureMapGeolocationProvider Class Reference

The TdxMapControlInformationProviderClass references the TdxMapControlAzureMapGeolocationProvider class.

To see Microsoft Azure Map tile and information providers in action, run the Mapping demo in the VCL Demo Center installed with compiled DevExpress demos. When the demo is opened, it downloads tile data and additional information from Azure Map servers to display a map and build routes between specified points.

Download: Compiled VCL Demos

Tip

Compiled DevExpress demos ship with source code installed in the Public Documents folder (%Public%) for all users ( default ). You can find all project and source code files for the Map Control demo in the following folder:

%Public%\Documents\DevExpress VCL Demos\MegaDemos\Product Demos\ExpressMapControl

Inheritance

TObject TPersistent TComponent TcxCustomComponent TcxComponentCollectionItem TdxMapControlInformationProvider TdxMapControlAzureMapInformationProvider TdxMapControlAzureMapGeolocationProvider

See Also

TdxMapControlAzureMapImageryDataProvider Class

TdxMapControlAzureMapGeolocationProvider Members

dxAzureMapInformationProviders Unit