var
  TL,M: TDoublePoint;
  BR,N: TDoublePoint;
  BL,K: TDoublePoint;
  TR,L: TDoublePoint;
  CC,C: TDoublePoint;
  VEPSG: Integer;
  Proj4Conv: IProj4Converter;
begin
  TL.x := GetLLon;
  TL.y := GetTLat;
  BR.x := GetRLon;
  BR.y := GetBLat;
  BL.x := GetLLon;
  BL.y := GetBLat;
  TR.x := GetRLon;
  TR.y := GetTLat;
  CC.x := (GetLLon+GetRLon)/2;
  CC.y := (GetTLat+GetBLat)/2;

  // get zone
  VEPSG := (Trunc(TL.x) div 6) + 32631;
  Proj4Conv := Converter.GetProj4Converter;
  Proj4Conv.SetEPSG(VEPSG,'');
  if Proj4Conv.Available then begin
    // convert
    M := Proj4Conv.LonLat2XY(TL);
    N := Proj4Conv.LonLat2XY(BR);
    K := Proj4Conv.LonLat2XY(BL);
    L := Proj4Conv.LonLat2XY(TR);
    C := Proj4Conv.LonLat2XY(CC);
    // make url
    ResultURL := GetURLBase + '&tlx=' + RoundEx(M.x,6) +
                              '&tly=' + RoundEx(M.y,6) +
                              '&brx=' + RoundEx(N.x,6) +
                              '&bry=' + RoundEx(N.y,6) +
                              '&blx=' + RoundEx(K.x,6) +
                              '&bly=' + RoundEx(K.y,6) +
                              '&trx=' + RoundEx(L.x,6) +
                              '&try=' + RoundEx(L.y,6) +
                              '&ccx=' + RoundEx(C.x,6) +
                              '&ccy=' + RoundEx(C.y,6) +
                              '&llt=' + RoundEx(GetTLat,9) +
                              '&llb=' + RoundEx(GetBLat,9) +
                              '&lll=' + RoundEx(GetLLon,9) +
                              '&llr=' + RoundEx(GetRLon,9) +
                              '&sps=' + IntToStr(VEPSG) +
                              '&ver=' + Version;
  end else begin
    // not available
    ResultURL := GetURLBase;
  end;
end.