es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener las coordenadas a partir de una dirección legible en Delphi

¿Cómo puedo obtener las coordenadas a partir de una dirección dada? Estoy tratando de ejecutar esto tanto en la plataforma Android como en iOS. He intentado utilizar la propiedad OnGeocode en TGeocoder, pero no funciona realmente. A continuación se muestra mi código, ¿he hecho algo mal? Soy nuevo en Delphi.

var 
  sAddr := TCivicAddress.Create;
  sAddr.Address := '(Mi dirección)';

try
  if not Assigned(FGeocoder) then begin
    if Assigned(TGeocoder.Current) then
      FGeocoder := TGeocoder.Current.Create;
    if Assigned(FGeocoder) then
      FGeocoder.OnGeocode := OnGeocodeEvent;
  end;

  if Assigned(FGeocoder) then begin
    FGeocoder.Geocode(sAddr);
  end;
except
  on E: Exception do
    ShowMessage(E.Message);
end;
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para obtener las coordenadas de una dirección dada, puedes usar una API de geocodificación como Google Maps API o OpenStreetMap API. Estas APIs proporcionan un servicio web que puede ser llamado desde tu código en Delphi para convertir una dirección en un conjunto de coordenadas de latitud y longitud.

    Aquí tienes un ejemplo de fragmento de código que utiliza la API de Google Maps:

    uses
      System.Net.HttpClient;
    
    function GeocodeAddress(const Address: string): TLocationCoord2D;
    var
      Url: string;
      JsonStr: string;
      JsonObj: TJSONObject;
      JsonResults: TJSONArray;
      JsonLocation: TJSONObject;
    begin
      Url := Format('https://maps.googleapis.com/maps/api/geocode/json?address=%s',
        [TNetEncoding.URL.Encode(Address)]);
      JsonStr := TNetHTTPClient.Create.Get(Url).ContentAsString();
      JsonObj := TJSONObject.ParseJSONValue(JsonStr) as TJSONObject;
      try
        JsonResults := JsonObj.GetValue('results') as TJSONArray;
        if (JsonResults.Count > 0) then
        begin
          JsonLocation := JsonResults.Items[0].GetValue('geometry').GetValue('location') as TJSONObject;
          Result.Latitude := JsonLocation.GetValue('lat').Value.ToExtended;
          Result.Longitude := JsonLocation.GetValue('lng').Value.ToExtended;
        end;
      finally
        JsonObj.Free;
      end;
    end;
    

    Este código envía una solicitud HTTP a la API de Google Maps con la dirección especificada, y recibe una respuesta JSON que contiene las coordenadas de latitud y longitud. El código luego extrae las coordenadas del JSON y las devuelve como un registro TLocationCoord2D.

    Puedes llamar a esta función en tu código en Delphi para obtener las coordenadas de la dirección proporcionada. Sin embargo, debes asegurarte de que tu aplicación tenga conectividad a internet y los permisos suficientes para acceder a la API.

Comments are closed.