Back to Devexpress

TdxMapControlAzureMapReverseGeocodeProvider.CreateQueryParams Method

vcl-dxazuremapinformationproviders-dot-tdxmapcontrolazuremapreversegeocodeprovider.md

latest5.1 KB
Original Source

TdxMapControlAzureMapReverseGeocodeProvider.CreateQueryParams Method

Creates an information container required to send a query to an Azure Maps server.

Declaration

delphi
function CreateQueryParams: IdxAzureMapReverseGeocodeQueryParams;

Returns

TypeDescription
IdxAzureMapReverseGeocodeQueryParams

Stores Azure Maps Reverse Geocode query parameters.

|

Remarks

Call the CreateQueryParams function to create and configure server query parameters before an Execute or ExecuteAsync procedure call.

Asynchronous Queries and Server Responses

To receive and process a response from an Azure Maps server after an ExecuteAsync procedure call, handle the OnResponse event.

Code Example: Obtain Map Point Address

The following code example implements a procedure that uses a configured information provider component to create a pushpin at the specified point on the map and assign the point’s address to the pushpin hint:

delphi
uses
  dxAzureMapInformationProviders; // Declares TdxMapControlAzureMapReverseGeocodeProvider
// ...

procedure TMyForm.AddPushpin(AGeoPoint: TdxMapControlGeoPoint);
var
  APushpin: TdxMapPushpin;
  AParams: IdxAzureMapReverseGeocodeQueryParams;
  AResponse: TdxAzureMapReverseGeocodeRequestResponse;
begin
  // Creates a new pushpin on an existing map item layer
  APushpin := dxMapControl1ItemLayer1.MapItems.Add(TdxMapPushpin) as TdxMapPushpin;
  APushpin.Location.GeoPoint := AGeoPoint;
  AParams := dxMapControl1AzureMapReverseGeocodeProvider1.CreateQueryParams;
  AParams.Coordinates := APushpin.Location.GeoPoint;
  // Uses a configured reverse geocode provider to send a query to an Azure Maps server
  dxMapControl1AzureMapReverseGeocodeProvider1.Execute(AParams, AResponse);
  try
    if AResponse <> nil then // Checks if a server response is received
    begin
      if AResponse.IsSuccess and (AResponse.Features.Count > 0) then // Checks if the query is successful
        APushpin.Hint := AResponse.Features.First.Properties.Address.FormattedAddress;
    end;
  finally
    AResponse.Free; // Deletes the query result regardless of the operation's success 
  end;
end;
cpp
#include "dxAzureMapInformationProviders.hpp" // Declares TdxMapControlAzureMapReverseGeocodeProvider
// ...

void __fastcall TMyForm::AddPushpin(TdxMapControlGeoPoint *AGeoPoint)
{
  TdxMapPushpin *APushpin;
  _di_IdxAzureMapReverseGeocodeQueryParams AParams;
  TdxAzureMapReverseGeocodeRequestResponse *AResponse;

  // Creates a new pushpin on an existing map item layer
  APushpin = dynamic_cast<TdxMapPushpin*>(dxMapControl1ItemLayer1->MapItems->Add(__classid(TdxMapPushpin)));
  APushpin->Location->GeoPoint = AGeoPoint;
  AParams = dxMapControl1AzureMapReverseGeocodeProvider1->CreateQueryParams();
  AParams->Coordinates = APushpin->Location->GeoPoint;
  // Uses a configured reverse geocode provider to send a query to an Azure Maps server
  dxMapControl1AzureMapReverseGeocodeProvider1->Execute(AParams, AResponse);
  try
  {
    if(AResponse != nullptr) // Checks if a server response is received
    {
      if((AResponse->IsSuccess) && (AResponse->Features->Count > 0)) // Checks if the query is successful
        APushpin->Hint = AResponse->Features->First()->Properties->Address->FormattedAddress;
    }
  }
  __finally
  {
    delete AResponse; // Deletes the query result response regardless of the operation's success
  }
}

See Also

TdxMapControlAzureMapGeocodeProvider.CreateQueryParams Function

TdxMapControlAzureMapReverseGeocodeProvider Class

TdxMapControlAzureMapReverseGeocodeProvider Members

dxAzureMapInformationProviders Unit