Delphi ActiveX
Delphi ActiveX
Azure Maps Get Search Address
See more Azure Maps Examples
Get information for a given address.Chilkat Delphi ActiveX Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
...
procedure TForm1.Button1Click(Sender: TObject);
var
http: TChilkatHttp;
url: WideString;
strResp: WideString;
jsonResponse: TChilkatJsonObject;
summaryQuery: WideString;
summaryQueryType: WideString;
summaryQueryTime: Integer;
summaryNumResults: Integer;
summaryOffset: Integer;
summaryTotalResults: Integer;
summaryFuzzyLevel: Integer;
i: Integer;
count_i: Integer;
v_type: WideString;
id: WideString;
score: WideString;
addressStreetNumber: WideString;
addressStreetName: WideString;
addressMunicipalitySubdivision: WideString;
addressMunicipality: WideString;
addressCountrySecondarySubdivision: WideString;
addressCountryTertiarySubdivision: WideString;
addressCountrySubdivision: WideString;
addressPostalCode: WideString;
addressExtendedPostalCode: WideString;
addressCountryCode: WideString;
addressCountry: WideString;
addressCountryCodeISO3: WideString;
addressFreeformAddress: WideString;
addressCountrySubdivisionName: WideString;
positionLat: WideString;
positionLon: WideString;
viewportTopLeftPointLat: WideString;
viewportTopLeftPointLon: WideString;
viewportBtmRightPointLat: WideString;
viewportBtmRightPointLon: WideString;
j: Integer;
count_j: Integer;
begin
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http := TChilkatHttp.Create(Self);
http.Accept := 'application/json';
url := 'https://atlas.microsoft.com/search/address/{$format}?subscription-key=[subscription-key]&api-version=1.0&query={$query}';
http.SetUrlVar('format','json');
http.SetUrlVar('query','15127 NE 24th Street, Redmond, WA 98052');
strResp := http.QuickGetStr(url);
if (http.LastMethodSuccess <> 1) then
begin
Memo1.Lines.Add(http.LastErrorText);
Exit;
end;
Memo1.Lines.Add('Response Status Code: ' + IntToStr(http.LastStatus));
jsonResponse := TChilkatJsonObject.Create(Self);
jsonResponse.Load(strResp);
jsonResponse.EmitCompact := 0;
Memo1.Lines.Add(jsonResponse.Emit());
if (http.LastStatus <> 200) then
begin
Memo1.Lines.Add('Failed.');
Exit;
end;
// Sample output...
// (See the parsing code below..)
//
// Use this online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
// {
// "summary": {
// "query": "15127 NE 24th Street, Redmond, WA 98052",
// "queryType": "NON_NEAR",
// "queryTime": 58,
// "numResults": 1,
// "offset": 0,
// "totalResults": 1,
// "fuzzyLevel": 1
// },
// "results": [
// {
// "type": "Point Address",
// "id": "US/PAD/p0/19173426",
// "score": 14.51,
// "address": {
// "streetNumber": "15127",
// "streetName": "NE 24th St",
// "municipalitySubdivision": "Redmond",
// "municipality": "Redmond, Adelaide, Ames Lake, Avondale, Earlmount",
// "countrySecondarySubdivision": "King",
// "countryTertiarySubdivision": "Seattle East",
// "countrySubdivision": "WA",
// "postalCode": "98052",
// "extendedPostalCode": "980525544",
// "countryCode": "US",
// "country": "United States Of America",
// "countryCodeISO3": "USA",
// "freeformAddress": "15127 NE 24th St, Redmond, WA 980525544",
// "countrySubdivisionName": "Washington"
// },
// "position": {
// "lat": 47.6308,
// "lon": -122.1385
// },
// "viewport": {
// "topLeftPoint": {
// "lat": 47.6317,
// "lon": -122.13983
// },
// "btmRightPoint": {
// "lat": 47.6299,
// "lon": -122.13717
// }
// },
// "entryPoints": [
// {
// "type": "main",
// "position": {
// "lat": 47.6315,
// "lon": -122.13852
// }
// }
// ]
// }
// ]
// }
//
summaryQuery := jsonResponse.StringOf('summary.query');
summaryQueryType := jsonResponse.StringOf('summary.queryType');
summaryQueryTime := jsonResponse.IntOf('summary.queryTime');
summaryNumResults := jsonResponse.IntOf('summary.numResults');
summaryOffset := jsonResponse.IntOf('summary.offset');
summaryTotalResults := jsonResponse.IntOf('summary.totalResults');
summaryFuzzyLevel := jsonResponse.IntOf('summary.fuzzyLevel');
i := 0;
count_i := jsonResponse.SizeOfArray('results');
while i < count_i do
begin
jsonResponse.I := i;
v_type := jsonResponse.StringOf('results[i].type');
id := jsonResponse.StringOf('results[i].id');
score := jsonResponse.StringOf('results[i].score');
addressStreetNumber := jsonResponse.StringOf('results[i].address.streetNumber');
addressStreetName := jsonResponse.StringOf('results[i].address.streetName');
addressMunicipalitySubdivision := jsonResponse.StringOf('results[i].address.municipalitySubdivision');
addressMunicipality := jsonResponse.StringOf('results[i].address.municipality');
addressCountrySecondarySubdivision := jsonResponse.StringOf('results[i].address.countrySecondarySubdivision');
addressCountryTertiarySubdivision := jsonResponse.StringOf('results[i].address.countryTertiarySubdivision');
addressCountrySubdivision := jsonResponse.StringOf('results[i].address.countrySubdivision');
addressPostalCode := jsonResponse.StringOf('results[i].address.postalCode');
addressExtendedPostalCode := jsonResponse.StringOf('results[i].address.extendedPostalCode');
addressCountryCode := jsonResponse.StringOf('results[i].address.countryCode');
addressCountry := jsonResponse.StringOf('results[i].address.country');
addressCountryCodeISO3 := jsonResponse.StringOf('results[i].address.countryCodeISO3');
addressFreeformAddress := jsonResponse.StringOf('results[i].address.freeformAddress');
addressCountrySubdivisionName := jsonResponse.StringOf('results[i].address.countrySubdivisionName');
positionLat := jsonResponse.StringOf('results[i].position.lat');
positionLon := jsonResponse.StringOf('results[i].position.lon');
viewportTopLeftPointLat := jsonResponse.StringOf('results[i].viewport.topLeftPoint.lat');
viewportTopLeftPointLon := jsonResponse.StringOf('results[i].viewport.topLeftPoint.lon');
viewportBtmRightPointLat := jsonResponse.StringOf('results[i].viewport.btmRightPoint.lat');
viewportBtmRightPointLon := jsonResponse.StringOf('results[i].viewport.btmRightPoint.lon');
j := 0;
count_j := jsonResponse.SizeOfArray('results[i].entryPoints');
while j < count_j do
begin
jsonResponse.J := j;
v_type := jsonResponse.StringOf('results[i].entryPoints[j].type');
positionLat := jsonResponse.StringOf('results[i].entryPoints[j].position.lat');
positionLon := jsonResponse.StringOf('results[i].entryPoints[j].position.lon');
j := j + 1;
end;
i := i + 1;
end;
end;